Salve, vorrei iniziare dicendo che il "programma di base" è fatto, ma vorrei collegare uno schermo LCD ad un altro Arduino(per mancanza di pin al primo).
So che per collegare 2 Arduino si può collegare in modo seriale, ma il problema è il programma , non riesco proprio a capire come si deve scrivere .
Il programma qui sotto l'ho fatto pensando di usare un solo Arduino con un LCD I2C ma per mancanza di componenti lo devo fare con un LCD separato.
PS: se si può migliorare il programma sarei lieto di saperlo.
Grazie in anticipo
[code]
#include <LiquidCrystal.h>
#define LED_B1 6
#define LED_B2 7
#define LED_B3 8
#define LED_B4 9
#define PUL1 3
#define PUL2 4
#define PUL3 5
int valpul1 = 0;
int valpul2 = 0;
int valpul3 = 0;
int vecchio_valpul1 = 0;
int vecchio_valpul2 = 0;
int vecchio_valpul3 = 0;
#define B1 10
#define B2 11
#define B3 12
#define B4 13
int cocktail_1 = 0;
int cocktail_2 = 0;
int cocktail_3 = 0;
int stato1 = 0;
int stato2 = 0;
int stato3 = 0;
int backLight = 13;
int x=0;
int timer=0;
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); //modificare pin
void setup(){
pinMode(LED_B1, OUTPUT);
pinMode(LED_B2, OUTPUT);
pinMode(LED_B3, OUTPUT);
pinMode(LED_B4, OUTPUT);
pinMode(PUL1, INPUT);
pinMode(PUL2, INPUT);
pinMode(PUL3, INPUT);
pinMode(B1, OUTPUT);
pinMode(B2, OUTPUT);
pinMode(B3, OUTPUT);
pinMode(B4, OUTPUT);
}
void loop()
{
pinMode(backLight, OUTPUT);
digitalWrite(backLight, HIGH);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(5, 0);
x=0;
lcd.print("Cocktail1");
while(x<16){
lcd.scrollDisplayLeft();
delay(300);
x++;
}
lcd.clear();
lcd.setCursor(5, 0);
x=0;
lcd.print("Cocktail2");
while(x<16){
lcd.scrollDisplayLeft();
delay(300);
x++;
}
lcd.clear();
lcd.setCursor(5, 0);
x=0;
lcd.print("Cocktail3");
while(x<16){
lcd.scrollDisplayLeft();
delay(300);
x++;
}
delay(1000);
//programma Pulsanti Bottiglie
valpul1 = digitalRead(PUL1);
valpul2 = digitalRead(PUL2);
valpul3 = digitalRead(PUL3);
if((valpul1 == HIGH) && (vecchio_valpul1 == LOW)){
stato1 = 1 - stato1;
}
else if(valpul1 == LOW) {
stato1 = 0;
}
vecchio_valpul1 = valpul1;
if((valpul2 == HIGH) && (vecchio_valpul2 == LOW)){
stato2 = 1 - stato2;
}
else if(valpul2 == LOW) {
stato2 = 0;
}
vecchio_valpul2 = valpul2;
if((valpul3 == HIGH) && (vecchio_valpul3 == LOW)){
stato3 = 1 - stato3;
}
else if(valpul3 == LOW) {
stato3 = 0;
}
vecchio_valpul3 = valpul3;
//programma esecutivo
if(stato1 == 1){
timer=100;
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Cocktail1");
digitalWrite(cocktail_1,1);
digitalWrite(LED_B1, HIGH);
digitalWrite(B1, HIGH);
delay (1000);
digitalWrite(LED_B1, LOW);
digitalWrite(B1, LOW);
digitalWrite(LED_B2, HIGH);
digitalWrite(B2, HIGH);
delay (500);
digitalWrite(LED_B2, LOW);
digitalWrite(B2, LOW);
delay(100);
timer=0;
}
if(stato2 == 1) {
timer=100;
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Cocktail2");
digitalWrite(cocktail_2,1);
digitalWrite(LED_B2, HIGH);
digitalWrite(B2, HIGH);
delay (1000);
digitalWrite(LED_B2, LOW);
digitalWrite(B2, LOW);
digitalWrite(LED_B3, HIGH);
digitalWrite(B3, HIGH);
delay (500);
digitalWrite(LED_B3, LOW);
digitalWrite(B3, LOW);
delay(100);
timer=0;
}
if(stato3 == 1){
timer=100;
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Cocktail3");
digitalWrite(cocktail_3,1);
digitalWrite(LED_B4, HIGH);
digitalWrite(B4, HIGH);
delay (1000);
digitalWrite(LED_B4, LOW);
digitalWrite(B4, LOW);
digitalWrite(LED_B2, HIGH);
digitalWrite(B2, HIGH);
delay (500);
digitalWrite(LED_B2, LOW);
digitalWrite(B2, LOW);
delay(100);
timer=0;
}
}
[/code]