Salve ho intenzione di creare un programma per arduino che prende in input il valore di una fotoresistenza e ogni volta che supera un valore(per es. 400) spegne un LED (in totale ho intenzione di usare 4/5 LED)
Non l'ho scritto prima, conosco le basi del c e c++
int luce;
int lucen = 5;
bool v = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
luce = analogRead(0);
Serial.println(luce);
if (v == 1)
{
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
}
if (luce < 400)
{
lucen = lucen - 1;
if (lucen == 4)
{
digitalWrite(8, LOW);
}
if (lucen == 3)
{
digitalWrite(9 , LOW);
}
if (lucen == 2)
{
digitalWrite(10 , LOW);
}
if (lucen == 1)
{
digitalWrite(11 , LOW);
}
else
{
digitalWrite(12, LOW);
}
v = 1;
}
}
quando eseguo questo programma si accendono i 5 led solo superato il valore stabilito della fotoresistenza e il mio quinto led si spegne quando ritorna il valore stabilito.
questo è il codice che ho scritto, potreste aiutarmi?
grazie
Buona sera e benvenuto sul forum,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.
Guglielmo
P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda: - serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - pinout delle varie schede by xxxPighi: Pinout - link generali utili: Link Utili
Ciao francifgl , ho riscritto il codice in un modo differente , prima di vederlo però ti serve sapere come si usa uno switch case , se non lo conosci puoi sempre vedere qua CLICCA QUA ( PAGINA UFFICIALE ARDUINO) , oppure se non capisci chiedi pure , in ogni caso il codice che ho riscritto è questo , dovrebbe funzionare :
#define led1 8
#define led2 9
#define led3 10
#define led4 11
#define led5 12
#define Vs 400 // valore di soglia Vs , cioè Vs = Vs , posto dove compara la variabile letta
int Lval = 0; // valore in entrata del tuo sensore
int pass = 0; // valore dei case
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Lval = analogRead(0);
Serial.println(Lval);
switch (pass) {
case 0:
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
pass = 1;
break;
case 1:
if (Lval > Vs) {
digitalWrite(led5, LOW);
pass = 2;
delay(100);
}
else {
delay(100);
pass = 1;
}
break;
case 2:
if (Lval > Vs) {
digitalWrite(led4, LOW);
pass = 3;
delay(100);
}
else {
delay(100);
pass = 2;
}
break;
case 3:
if (Lval > Vs) {
digitalWrite(led3, LOW);
pass = 4;
delay(100);
}
else {
delay(100);
pass = 3;
}
break;
case 4:
if (Lval > Vs) {
digitalWrite(led2, LOW);
pass = 5;
delay(100);
}
else {
delay(100);
pass = 4;
}
break;
case 5:
if (Lval > Vs) {
digitalWrite(led1, LOW);
pass = 5;
delay(100);
}
else {
delay(100);
pass = 5;
}
break;
}
}