Arduino auto start problem

hi,

I made arduino stairs light. Press button and led strips start to shine, pres button again and led strips off. I connect arduino and led strips to 12V power supply.

Problem:

  1. Arduino auto restart over and over again.
  2. Then I push another house light button (not connected to arduino) led strips starts to shine or it can start shine any time.

Could it be that arduino react to electrical spikes and start program? Or I forgot to put resistor somewhere.

Code:

const int jungiklis1 = 11;
const int jungiklis2 = 10;

const int led1 = 23;
const int led2 = 25;
const int led3 = 27;
const int led4 = 29;
const int led5 = 31;
const int led6 = 33;
const int led7 = 35;
const int led8 = 37;
const int led9 = 39;
const int led10 = 41;
const int led11 = 43;
const int led12 = 45;
const int led13 = 47;
const int led14 = 49;

const int lempa = 12;

int jungiklio_busena1 = 0;
int jungiklio_busena2 = 0;

int sviesos_busena = 0;

//--------------------------------------------------------------------------------------------

void jungiklis1_ijungti() {
  digitalWrite(lempa, HIGH);
  digitalWrite(led1, HIGH);
  delay(500);
  digitalWrite(led2, HIGH);
  delay(500);
  digitalWrite(led3, HIGH);
  delay(500);
  digitalWrite(led4, HIGH);
  delay(500);
  digitalWrite(led5, HIGH);
  delay(500);
  digitalWrite(led6, HIGH);
  delay(500);
  digitalWrite(led7, HIGH);
  delay(500);
  digitalWrite(led8, HIGH);
  delay(500);
  digitalWrite(led9, HIGH);
  delay(500);
  digitalWrite(led10, HIGH);
  delay(500);
  digitalWrite(led11, HIGH);
  delay(500);
  digitalWrite(led12, HIGH);
  delay(500);
  digitalWrite(led13, HIGH);
  delay(500);
  digitalWrite(led14, HIGH);
}

void jungiklis2_ijungti() {
  digitalWrite(lempa, HIGH);
  digitalWrite(led14, HIGH);
  delay(500);
  digitalWrite(led13, HIGH);
  delay(500);
  digitalWrite(led12, HIGH);
  delay(500);
  digitalWrite(led11, HIGH);
  delay(500);
  digitalWrite(led10, HIGH);
  delay(500);
  digitalWrite(led9, HIGH);
  delay(500);
  digitalWrite(led8, HIGH);
  delay(500);
  digitalWrite(led7, HIGH);
  delay(500);
  digitalWrite(led6, HIGH);
  delay(500);
  digitalWrite(led5, HIGH);
  delay(500);
  digitalWrite(led4, HIGH);
  delay(500);
  digitalWrite(led3, HIGH);
  delay(500);
  digitalWrite(led2, HIGH);
  delay(500);
  digitalWrite(led1, HIGH);
}

void jungiklis1_isjungti() {
  digitalWrite(lempa, LOW);
  digitalWrite(led14, LOW);
  delay(500);
  digitalWrite(led13, LOW);
  delay(500);
  digitalWrite(led12, LOW);
  delay(500);
  digitalWrite(led11, LOW);
  delay(500);
  digitalWrite(led10, LOW);
  delay(500);
  digitalWrite(led9, LOW);
  delay(500);
  digitalWrite(led8, LOW);
  delay(500);
  digitalWrite(led7, LOW);
  delay(500);
  digitalWrite(led6, LOW);
  delay(500);
  digitalWrite(led5, LOW);
  delay(500);
  digitalWrite(led4, LOW);
  delay(500);
  digitalWrite(led3, LOW);
  delay(500);
  digitalWrite(led2, LOW);
  delay(500);
  digitalWrite(led1, LOW);
}

void jungiklis2_isjungti() {
  digitalWrite(lempa, LOW);
  digitalWrite(led1, LOW);
  delay(500);
  digitalWrite(led2, LOW);
  delay(500);
  digitalWrite(led3, LOW);
  delay(500);
  digitalWrite(led4, LOW);
  delay(500);
  digitalWrite(led5, LOW);
  delay(500);
  digitalWrite(led6, LOW);
  delay(500);
  digitalWrite(led7, LOW);
  delay(500);
  digitalWrite(led8, LOW);
  delay(500);
  digitalWrite(led9, LOW);
  delay(500);
  digitalWrite(led10, LOW);
  delay(500);
  digitalWrite(led11, LOW);
  delay(500);
  digitalWrite(led12, LOW);
  delay(500);
  digitalWrite(led13, LOW);
  delay(500);
  digitalWrite(led14, LOW);
}

//--------------------------------------------------------------------------------------------

void setup() {
  pinMode(jungiklis1, INPUT); 
  pinMode(jungiklis2, INPUT);

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  pinMode(led10, OUTPUT);
  pinMode(led11, OUTPUT);
  pinMode(led12, OUTPUT);
  pinMode(led13, OUTPUT);
  pinMode(led14, OUTPUT); 
  
  pinMode(lempa, OUTPUT); 
 }

//--------------------------------------------------------------------------------------------

 void loop(){
  jungiklio_busena1 = digitalRead(jungiklis1);
  jungiklio_busena2 = digitalRead(jungiklis2);

  if (sviesos_busena == 0 && jungiklio_busena1 == HIGH) {
      jungiklis1_ijungti();
      sviesos_busena = 1;
    }

  jungiklio_busena1 = digitalRead(jungiklis1);
  jungiklio_busena2 = digitalRead(jungiklis2);

  if (sviesos_busena == 0 && jungiklio_busena2 == HIGH) {
      jungiklis2_ijungti();
      sviesos_busena = 1;
    }

  jungiklio_busena1 = digitalRead(jungiklis1);
  jungiklio_busena2 = digitalRead(jungiklis2);

  if (sviesos_busena == 1 && jungiklio_busena1 == HIGH) {
      jungiklis1_isjungti();
      sviesos_busena = 0;
    }

  jungiklio_busena1 = digitalRead(jungiklis1);
  jungiklio_busena2 = digitalRead(jungiklis2);

  if (sviesos_busena == 1 && jungiklio_busena2 == HIGH) {
      jungiklis2_isjungti();
      sviesos_busena = 0;
    }

 }

Hi, Yes this sounds like Electromagnetic Interference...

See this page for some info: http://arduino-info.wikispaces.com/RelayIsolation

Do you have pullup or pulldown resistors on the button pins?

ammygo:
Or I forgot to put resistor somewhere.

You forgot to post a schematic is what you did.

Do you have pullup or pulldown resistors on the button pins?

no, I dont use resistors on buttons pins, what kind of pullup or pulldown resistors I have use?

You forgot to post a schematic is what you did.

sorry I dont have schematic. I use resistors (470ohms) only between arduino pin and tranzistors

Is your Button on a long wire ? that can also act as an aerial for interference.

If you do not have a schematic, draw it one a piece of paper and photo it, also a photo of the actual hardware may help as the physical layout can be important.

Hi,
You start switch if is between 5v and the input pin, will require a 10K resistor between the input pin and gnd.
This because the input pin must be held either to gnd or 5V, not left open circuit to pick up switching noise.

sorry I dont have schematic. I use resistors (470ohms) only between arduino pin and tranzistors

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Thanks.. Tom.. :slight_smile: