Ciao a tutti, sono un diciannovenne che si sta cimentando nell'utilizzo del linguaggio di arduino e al seguente progetto sto trovando varie difficoltà. Mi rivolgo a voi esperti e spero siate disponibili nell'aiutarvi, ve ne sarò immensamente grato!
Allora, il programmino che sto sviluppando dovrebbe funzionare così:
premo Pulsante 1 accende led1
premo Pulsante 2 spegne led1 e accende led2 che rimane acceso per 5 secondi poi si spegne e riaccende led1
Inizia con scrivere un programma che fa quello che descrivi al punto 1.
Quando il punto 1 è risolto, scrivi un altro programma identico e apporta le modifiche per fare quello che descrivi al punto 2, continua così per tutti i punti.
Ho sviluppato i primi due pulsanti ma non danno segno di funzionare!!
int M1=2;
int BP=3;
int EP=4;
int FC1=8;
int FC2=9;
int pulsante=10;
int SFC1=0;
int SFC2=0;
int Spulsante=0;
void setup() {
pinMode(M1,OUTPUT);
pinMode(BP,OUTPUT);
pinMode(EP,OUTPUT);
pinMode(FC1,INPUT);
pinMode(FC2,INPUT);
}
void loop() {
int val1 = digitalRead(pulsante);
int val2 = digitalRead(FC1);
int val3 = digitalRead(FC2);
if (val1 == HIGH);
{
if (Spulsante == LOW);
{
Spulsante=HIGH;
digitalWrite(M1,HIGH);
}
digitalWrite(M1,LOW); }
if (val2 == HIGH)
{
if (SFC1 == LOW)
{
SFC1=HIGH;
digitalWrite(M1,LOW);
digitalWrite(BP,HIGH);
delay(5000);
digitalWrite(BP,LOW);
digitalWrite(M1,HIGH);
} }
Sono ancora io, e non sono ancora andato avanti col progetto sono arrivato a questo sketch senza risultati... arduino a cazzi sua
int M1=2;
int BP=3;
int EP=4;
int FC1=8;
int FC2=9;
int pulsante=10;
int SFC1=0;
int SFC2=0;
int Spulsante=0;
void setup() {
pinMode(M1,OUTPUT);
pinMode(BP,OUTPUT);
pinMode(EP,OUTPUT);
pinMode(FC1,INPUT);
pinMode(FC2,INPUT);
pinMode(pulsante,INPUT);
}
void loop() {
int val1 = digitalRead(pulsante);
int val2 = digitalRead(FC1);
int val3 = digitalRead(FC2);
if (val1 == HIGH);
{
if (Spulsante=LOW);
{
digitalWrite(M1,LOW);
}
Spulsante=HIGH;
digitalWrite(M1,HIGH);
Spulsante=LOW;
}
if (val2 == HIGH)
{
if (SFC1 == LOW)
{
SFC1=HIGH;
digitalWrite(M1,LOW);
digitalWrite(BP,HIGH);
delay(5000);
digitalWrite(BP,LOW);
digitalWrite(M1,HIGH);
SFC1=LOW;
}}}
Inizia con scrivere un programma che fa quello che descrivi al punto 1.
Quando il punto 1 è risolto, scrivi un altro programma identico e apporta le modifiche per fare quello che descrivi al punto 2, continua così per tutti i punti.
Già che ci sono ti consigli di fare una ricerca sul DEBOUNCE.
Generalmente non faccio queste cose, ma in via del tutto eccezionale....
spero che ti possa essere di aiuto
Ad Usum Delphini
/*
1. premo Pulsante 1 accende led1
2. premo Pulsante 2 spegne led1 e accende led2 che rimane acceso per 5 secondi poi si spegne e riaccende led1
3. premo Pulsante 3 che accende led3
*/
//Ingressi digitali
int pulsante1 = 2;
int pulsante2 = 3;
int pulsante3 = 4;
int pulsante4 = 5;
//Uscite digitali
int led1 = 6;
int led2 = 7;
int led3 = 8;
//variabili
int stato_precedente_pulsante1=0;
int stato_precedente_pulsante2=0;
int stato_precedente_pulsante3=0;
int stato_pulsante1=HIGH;
int stato_pulsante2=HIGH;
int stato_pulsante3=HIGH;
void setup() {
pinMode(pulsante1, INPUT_PULLUP);
pinMode(pulsante2, INPUT_PULLUP);
pinMode(pulsante3, INPUT_PULLUP);
pinMode(pulsante4, INPUT_PULLUP);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void loop()
{
stato_pulsante1=digitalRead(pulsante1);
stato_pulsante2=digitalRead(pulsante2);
stato_pulsante3=digitalRead(pulsante3);
//gli ingressi dei pulsanti sono PULLUP = normarmente HIGH
//rilevamento fronte di discesa segnale pulsante1
if (stato_pulsante1==LOW && stato_precedente_pulsante1==LOW){
stato_precedente_pulsante1=HIGH;
digitalWrite(led1, HIGH);
}
//rilevamento fronte di salita pulsante1
if (stato_pulsante1==HIGH && stato_precedente_pulsante1==HIGH){
stato_precedente_pulsante1=LOW;
}
//rilevamento fronte di discesa segnale pulsante2
if (stato_pulsante2==LOW && stato_precedente_pulsante2==LOW){
stato_precedente_pulsante2=HIGH;
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(5000);
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
}
//rilevamento fronte di salita pulsante2
if (stato_pulsante2==HIGH && stato_precedente_pulsante2==HIGH){
stato_precedente_pulsante2=LOW;
}
//rilevamento fronte di discesa segnale pulsante3
//gli ingressi dei pulsanti sono PULLUP = normarmente HIGH
if (stato_pulsante3==LOW && stato_precedente_pulsante3==LOW){
stato_precedente_pulsante3=HIGH;
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
}
//rilevamento fronte di salita pulsante2
if (stato_pulsante3==HIGH && stato_precedente_pulsante3==HIGH){
stato_precedente_pulsante3=LOW;
}
// pulsante 4 spegne tutto
if (digitalRead(pulsante4)==LOW) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}//end main Loop