Buon giorno a te,
questo è il mio progetto/problema....
Ho fondalmente due pulsanti che quando sono premuti contemporaneamente accendono una luce verde
e sul display lcd salta fuori la scritta "erogazione energia"
Quando premo solo il destro si accende la luce rossa (la verde rimane spenta) e sul display viene scritto
"Premere anche il pulsante sinistro)
Viceversa quando premo il pulsante sinistro (luce rossa accesa-Luce verde spenta-Lcd "Premere pulsante destro)
Quando nessuna di queste condizioni è in "funzione" un led rgb si accende e sul display salta fuori "sistema offline"
Spero di essermi spiegato bene perchè probabilmente sembra più complicato di quello che è.
Calcolate che ho comprato il libretto di Arduino (Quindi non capisco fondamentalmente una mazza, e meno male che c' era il libro)
Se riesco allego il codice con qualche commento in proposito:
// VI PREGO AIUTATEMI NON SO PIÙ DOVE SBATTERE LA TESTA.
#include <LiquidCrystal.h>
LiquidCrystal lcd(9, 8, 5, 4, 3, 2);
#define Ledrosso 13
#define LedRGB 11
#define Ledverde 12
#define Pulsante 7
#define Pulsante2 6
#define LedLcd 10
void setup()
{
pinMode(Ledrosso, OUTPUT);
pinMode(LedRGB, OUTPUT);
pinMode(Ledverde,OUTPUT);
pinMode(LedLcd, OUTPUT);
pinMode(Pulsante2, INPUT);
pinMode(Pulsante, INPUT);
unsigned char myChar = 0;
// messaggio principale che si vede solo una volta accendendo la macchina
digitalWrite(LedLcd, HIGH);
lcd.begin(16, 2);
lcd.print(" Made by");
lcd.setCursor(0, 1);
lcd.print("Alex Branchi");
for (int positionCounter = 0; positionCounter < 13; positionCounter++)
{lcd.scrollDisplayLeft();
delay(150);}
for (int positionCounter = 0; positionCounter < 29; positionCounter++)
{lcd.scrollDisplayRight();
delay(150);}
for (int positionCounter = 0; positionCounter < 16; positionCounter++)
{lcd.scrollDisplayLeft();
delay(150);}
delay(2000);
lcd.noDisplay();
digitalWrite(LedLcd,LOW);}
void loop(){
//Pulsante 1 ON + Pulsante 2 ON = Luce verde accesa
if (digitalRead(Pulsante2) == HIGH && digitalRead(Pulsante) == HIGH)
{digitalWrite(Ledverde, HIGH);
unsigned char myChar = 1;} //NELLA MIA IGNORANZA HO APPENA CREATO UNA VARIABILE CON VALORE 1 PER SWICH CASE
else
{digitalWrite(Ledverde, LOW);}
//Pulsante 1 ON + Pulsante 2 OFF = Luce rossa accesa
if (digitalRead(Pulsante2) == LOW && digitalRead(Pulsante) == HIGH)
{digitalWrite(Ledrosso, HIGH);
unsigned char myChar = 2;} //NELLA MIA IGNORANZA HO APPENA CREATO UNA VARIABILE CON VALORE 2 PER SWICH CASE
else
{digitalWrite(Ledrosso, LOW);}
//Pulsante 1 OFF + Pulsante 2 ON = Luce rossa accesa
if (digitalRead(Pulsante2) == HIGH && digitalRead(Pulsante) == LOW)
{digitalWrite(Ledrosso, HIGH);
unsigned char myChar = 3;} //NELLA MIA IGNORANZA HO APPENA CREATO UNA VARIABILE CON VALORE 3 PER SWICH CASE
else
{digitalWrite(Ledrosso, LOW);}
//Funzione Defoult con led RGB accesa e luce verde o rossa spenta
if (digitalRead(Pulsante2) == LOW && digitalRead(Pulsante) == LOW)
{digitalWrite(LedRGB, HIGH);
}
else
{digitalWrite(LedRGB, LOW);}
//Test funzione swich case per lcd volendo ovviare al problema dei caratteri a random nel display Lcd
//L' idea è quella ma tra la teoria e la pratica...
switch (unsigned char myChar = 0) {
//messaggio 1
case '1':
lcd.clear();
lcd.display();
lcd.setCursor(1, 0);
lcd.print(" EROGAZIONE");
lcd.setCursor(0, 1);
lcd.print(" ENERGIA");
break;
//messaggio 2
case '2':
lcd.clear();
lcd.display();
lcd.setCursor(1, 0);
lcd.print(" PREMERE ANCHE");
lcd.setCursor(0, 1);
lcd.print(" TASTO SINISTRO");
break;
//messaggio 3
case '3':
lcd.clear();
lcd.display();
lcd.setCursor(1, 0);
lcd.print(" PREMERE ANCHE");
lcd.setCursor(0, 1);
lcd.print("TASTO DESTRO");
break;
default :
lcd.clear();
lcd.display();
lcd.setCursor(1, 0);
lcd.print("OFFLINE");}
}