Problema Quando inizializzo Arduino!

Ho il seguente problema devo togliere gli scatti quando inizializzo arduino il seguente motivo è che mi fa scattare il relè ,e possibile???? grazie

Posta il codice completo. Se è grosso, allegalo al post (additional options)

Cosa sono i

gli scatti quando inizializzo arduino

? Stai usando i pin 0, 1 o 13?? Ciao Uwe

Come è fatto il circuito?

Cioè, come sempre, SENZA informazioni (codice e disegno circuito) non si può dire nulla. :D

Secondo me manca una pull'down.

PaoloP: Secondo me manca una pull'down.

sicuramente.... anche due

scusate se non ho risposto subito
per quello che devo fare va benissimo ma non Quando inizializzo
il relè deve rimanere spento
Scusate Pull’down!? :frowning:
Grazie

#include <LiquidCrystal.h>

int in=7;         
int in2=8;        
int in3=9;        
int in4=10;       
 
const int buttonPin =7;     
const int RelePin =  A0;      

int buttonState = 1;         // Funzione Bottone

   int a = 0;
   int b = 0;
   int c= 0;
   int d = 0;

 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

 void setup() {
 
  pinMode(in,INPUT);              
  pinMode(RelePin, OUTPUT);      
  pinMode(buttonPin, INPUT);    
  lcd.begin(16, 2);
  lcd.print("Il MioSat");
  delay(2000); lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Oriz.");
  lcd.setCursor(0, 1);
  lcd.print("Vert.");   
}

void loop(){                                                                                               
  buttonState = digitalRead(buttonPin);
   if (buttonState == LOW) {                                               
   digitalWrite(RelePin, HIGH);   
  } 
  else { digitalWrite(RelePin, LOW);    
                                                 
  
   c=digitalRead(in);
  if ( c== 1){b=b+1; delay(200);}
  c=digitalRead(in3);
  if ( c== 1){b=b-1; delay(500);}
  d=digitalRead(in2);
  if ( d== 1){a=a+1;delay(500);}
  d=digitalRead(in4);
  if ( d== 1){a=a-1;delay(500);}
 
 
  lcd.setCursor(6, 0);
  lcd.print(a); lcd.print("    ");
  lcd.setCursor(6, 1); 
  lcd.print(b); lcd.print("    "); 
 
  }
}

hellworld: Quando inizializzo il relè deve rimanere spento Scusate Pull'down!? :(

Una resistenza di pull-down (ossia collegata verso massa) è una resistenza di alto valore che si usa per dare uno stato LOW predefinito ad un pin o ad un altro dispositivo. Nell'immagine, quando non premi il pulsante, il pin di Arduino legge uno stato di LOW. La resistenza è di alto valore perché, nel momento in cui chiudi il pulsante, non si crei un corto a massa ma scorra pochissima corrente.

Nel tuo caso serve per tenere il relé aperto durante l'inizializzazione, quando cioè l'Arduino viene avviato.

Il codice lo puoi scrivere anche così.

#include <LiquidCrystal.h>

const int in1 = 7;
const int in2 = 8;
const int in3 = 9;
const int in4 = 10;

const int buttonPin = 7; // Stesso pin di In1?
const int RelePin =  A0;

int buttonState = LOW;         // Funzione Bottone

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

boolean c = LOW;
int a = 0;
int b = 0;

void setup()
{
	pinMode(in1, INPUT);
	pinMode(in2, INPUT);
	pinMode(in3, INPUT);
	pinMode(in4, INPUT);
	pinMode(RelePin, OUTPUT);
	pinMode(buttonPin, INPUT);
	lcd.begin(16, 2);
	lcd.print("Il MioSat");
	delay(2000);
	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("Oriz.");
	lcd.setCursor(0, 1);
	lcd.print("Vert.");
}

void loop()
{
	buttonState = digitalRead(buttonPin);
	if (buttonState == LOW)
	{
		digitalWrite(RelePin, HIGH);
	}
	else
	{
		digitalWrite(RelePin, LOW);

		if ( digitalRead(in1) == HIGH)
		{
			b++;
			delay(200);
		}

		if ( digitalRead(in3) == HIGH)
		{
			b--;
			delay(500);
		}

		if ( digitalRead(in2) == HIGH)
		{
			a++;
			delay(500);
		}

		if ( digitalRead(in4) == HIGH)
		{
			a--;
			delay(500);
		}

		lcd.setCursor(6, 0);
		lcd.print(a);
		lcd.print("    ");
		lcd.setCursor(6, 1);
		lcd.print(b);
		lcd.print("    ");

	}
}

Nel codice inverti la logica. E’ una cosa voluta?
Se il pulsante è LOW il relè va HIGH e viceversa.
In quel caso ti serve una pull’up se mandi il pulsante a GND.

a ok capito tutti 4 i pulsanti sono a massa (-) con resistenza

Nel codice inverti la logica. E' una cosa voluta?

si perche serve soltanto quando premi il pulsante altrimenti rimane acceso scusate aggiungo i rele sono alimentati tramite uscita +5 volt e il classico modulo a 4 relè

const int buttonPin = 7; // Stesso pin di In1?
const int RelePin =  A0;

il Pin n°7 serve per dare comando al LCD e Relè che come si vede ha un entrate Digitale con uscita (A0) Analogica non ho piu spazio con le uscite digitali! Grazie

PaoloP funziona alla stessa maniera mi da l’impulso all’inizio
il relè si chiude!
ho risolto in parte il problema spostando

void loop(){                                                                                               
  buttonState = digitalRead(buttonPin);
   if (buttonState == LOW) {                                               
   digitalWrite(RelePin, HIGH);   
  } 
  else { digitalWrite(RelePin, LOW);

in basso non so perche!
questo sketch mi da dei problemi volendo aggiungere i 4 canali su 4 relè è il contatore LCD ! mi sapete dire
dove è che non và?? al momento rimane acceso in rele non ha il comando da pulsante!?

#include <LiquidCrystal.h>

int in= 7;         //+Verticale 
int in2=8;        //+Orizzontale
int in3=9;        //-Verticale
int in4=10;       //-Orizzontale 
 
const int buttonPin =7;            // numero interruttore 1
const int RelePin =A0;            // Numero Relè
const int buttonPin1 =8;         // numero interruttore 2
const int RelePin1 =A1;           // Numero Relè2

int buttonState = 1;         // Funzione Bottone on off
int buttonState1 =1; 

int a = 0;
int b = 0;
int c=  0;
int d = 0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);



void setup() {
  
   pinMode(in,INPUT);              //entrate Lcd
  lcd.begin(16, 2);
  lcd.print("Il MioSat");
  delay(2000); lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Oriz.");
  lcd.setCursor(0, 1);
  lcd.print("Vert.");
  
 
  pinMode(RelePin, OUTPUT);      // uscita relè
  pinMode(buttonPin, INPUT);     // funzione bottone
  pinMode(RelePin1, OUTPUT);      // uscita relè2
  pinMode(buttonPin1, INPUT);     // funzione bottone2
  
    
}

void loop(){  
                                                 
  
   c=digitalRead(in);
  if ( c== 1){b=b+1; delay(200);}
  c=digitalRead(in3);
  if ( c== 1){b=b-1; delay(500);}
  d=digitalRead(in2);
  if ( d== 1){a=a+1;delay(500);}
  d=digitalRead(in4);
  if ( d== 1){a=a-1;delay(500);}
 
 
  lcd.setCursor(6, 0);
  lcd.print(a); lcd.print("    ");
  lcd.setCursor(6, 1); 
  lcd.print(b); lcd.print("    "); 
  
  
                                                                           
  buttonState = digitalRead(buttonPin);
   if (buttonState == LOW) {                                               
   digitalWrite(RelePin, HIGH);                                              
   
} 
 else { digitalWrite(RelePin, LOW);   

  buttonState1 = digitalRead(buttonPin1);
   if (buttonState == LOW) {                                              
   digitalWrite(RelePin1, HIGH);                                            
   
} 
 else { digitalWrite(RelePin1, LOW);   
 
   
      
  }}
 }

GRAZIE