Buongiorno a tutti, sono nuovo del gruppo e ai primi passi con Arduino. Sto cercando di realizzare un circuito che permette il controllo di 4 semafori e la chiamata pedonale per un quinto. Il semaforo pedonale deve avere un buzzer e un conto alla rovescia. Non avendo abbastanza ingressi ho usato 2 schede Arduino. In allegato l'immagine del circuito e i 2 codici.
Avviando al simulazione mi viene restituito l'errore;
"Invalid header file"
Mi potreste aiutare ??? Grazie ![]()
// Code1 - Slave
#include <Wire.h>
const int a = 2;
const int b = 1;
const int c = 3;
const int d = 4;
const int e = 5;
const int f = 6;
const int g = 7;
int numero = -10;
int ritardo = 5000;
int pedone_R = 10;
int pedone_G = 9;
int pedone_V = 8;
int pulsante = 12;
void setup()
{
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(pedone_V, OUTPUT);
pinMode(pedone_G, OUTPUT);
pinMode(pedone_R, OUTPUT);
pinMode(11, OUTPUT);
pinMode(pulsante, INPUT);
pinMode(13, INPUT);
Wire.begin(13);
Wire.onRequest(requestEvent);
}
void loop()
{
if (digitalRead(pulsante) == HIGH); {
pedonale();
}
else{
blocco_semaforo();
}
}
void pedonale() {
delay(ritardo/10); //scala il numero della variabile in modo da contare alla rovescia
numero += -1;
delay(ritardo/2);
switch(numero) {
case -1:
digitalWrite(pedone_V, LOW);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_R, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH); //caso in cui la variabile raggiunge il valore -1
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
delay(ritardo/5);
break;
case 0:
digitalWrite(pedone_R, HIGH);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_V, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH); //attraverso gli HIGH/LOW mostro il numero 0, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
tone(11, 500, 500);
delay(ritardo/2);
break;
case 1:
digitalWrite(pedone_R,LOW);
digitalWrite(pedone_G, HIGH);
digitalWrite(pedone_V, LOW);
digitalWrite(a, LOW);
digitalWrite(b, HIGH); //attraverso gli HIGH/LOW mostro il numero 1, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
tone(11, 100, 500);
delay(ritardo/5);
break;
case 2:
digitalWrite(pedone_R, LOW);
digitalWrite(pedone_G, HIGH);
digitalWrite(pedone_V, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH); //attraverso gli HIGH/LOW mostro il numero 2, i LED e fa suonare il buzzer
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
tone(11, 100, 500);
delayritardo/5);
break;
case 3:
digitalWrite(pedone_R, LOW);
digitalWrite(pedone_G, HIGH);
digitalWrite(pedone_V, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH); //attraverso gli HIGH/LOW mostro il numero 3, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
tone(11, 100, 500);
delay(ritardo/5);
break;
case 4:
digitalWrite(pedone_R, LOW);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_V, HIGH);
digitalWrite(a, LOW);
digitalWrite(b, HIGH); //attraverso gli HIGH/LOW mostro il numero 4, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
tone(11, 100, 500);
delay(ritardo/5);
break;
case 5:
digitalWrite(pedone_R, LOW);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_V, HIGH);
digitalWrite(a, HIGH);
digitalWrite(b, LOW); //attraverso gli HIGH/LOW mostro il numero 5, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
tone(11, 100, 500);
delay(ritardo/5);
break;
case 6:
digitalWrite(pedone_R, LOW);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_V, HIGH);
digitalWrite(a, HIGH);
digitalWrite(b, LOW); //attraverso gli HIGH/LOW mostro il numero 6, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
tone(11, 100, 500);
delay(ritardo/5);
break;
case 7:
digitalWrite(pedone_R, LOW);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_V, HIGH);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH); //attraverso gli HIGH/LOW mostro il numero 7, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
tone(11, 100, 500);
delay(ritardo/5);
break;
case 8:
digitalWrite(pedone_R, LOW);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_V, HIGH);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH); //attraverso gli HIGH/LOW mostro il numero 8, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
tone(11, 100, 500);
delay(ritardo/5);
break;
case 9:
digitalWrite(pedone_R, LOW);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_V, HIGH);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH); //attraverso gli HIGH/LOW mostro il numero 9, i LED e fa suonare il buzzer
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
tone(11, 100,500);
delay(ritardo/5);
break;
}
if (digitalRead(pedone_V) == HIGH && (digitalRead(pedone_G) == HIGH && digitalRead(pedone_R) == HIGH)) {
digitalWrite(pedone_V, LOW);
digitalWrite(pedone_G, LOW);
digitalWrite(pedone_R, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH); //fa spegnere tutti i led se sono tutti accesi
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
if (digitalRead(pulsante) == HIGH) {
numero = 10; //legge il pulsante e resetta la variabile numero
}
}
void blocco_semaforo() {
digitalWrite(pedone_R, LOW);
}
void requestEvent()
{
if (digitalRead(13) == HIGH){
Wire.write("a");
}
else
{
Wire.write("s");
}
}
// Code2 - Master
//dichiaro le variabili dei led
//led dei semafori
#include <Wire.h>
int led_R1=2;
int led_G1=3;
int led_V1=4;
int led_R2=5;
int led_G2=6;
int led_V2=7;
int ritardo = 5000;
void setup()
{
Wire.begin();
Serial.begin(9600);//accendo il monitor seriale per i test
//modalità di funzionamento dei pin di Arduino
pinMode(led_R1, OUTPUT);
pinMode(led_G1, OUTPUT);
pinMode(led_V1, OUTPUT);
pinMode(led_R2, OUTPUT);
pinMode(led_G2, OUTPUT);
pinMode(led_V2, OUTPUT);
}
void loop()
{
Wire.requestFrom(13,1);
String b = "";
char c = Wire.read();
b = b + c;
delay (ritardo/10);
if (b == "a") {
blocco_semafori();
}
else {
sequenza_semafori();
}
}
void blocco_semafori() {
digitalWrite(led_R1, LOW);
digitalWrite(led_G1, HIGH);
digitalWrite(led_V1, LOW);
digitalWrite(led_R2, LOW);
digitalWrite(led_G2, HIGH);
digitalWrite(led_V2, LOW);
delay(ritardo/2);
digitalWrite(led_R1, HIGH);
digitalWrite(led_G1, LOW);
digitalWrite(led_V1, LOW);
digitalWrite(led_R2, HIGH);
digitalWrite(led_G2, LOW);
digitalWrite(led_V2, LOW);
delay(10000);
}
void sequenza_semafori() {
digitalWrite(led_R1, HIGH);
digitalWrite(led_G1, LOW);
digitalWrite(led_V1, LOW);
digitalWrite(led_R2, LOW);
digitalWrite(led_G2, LOW);
digitalWrite(led_V2, HIGH);
delay(ritardo);
digitalWrite(led_R1, HIGH);
digitalWrite(led_G1, LOW);
digitalWrite(led_V1, LOW);
digitalWrite(led_R2, LOW);
digitalWrite(led_G2, HIGH);
digitalWrite(led_V2, LOW);
delay(ritardo/2);
digitalWrite(led_R1, LOW);
digitalWrite(led_G1, LOW);
digitalWrite(led_V1, HIGH);
digitalWrite(led_R2, HIGH);
digitalWrite(led_G2, LOW);
digitalWrite(led_V2, LOW);
delay(ritardo);
digitalWrite(led_R1, LOW);
digitalWrite(led_G1, HIGH);
digitalWrite(led_V1, LOW);
digitalWrite(led_R2, HIGH);
digitalWrite(led_G2, LOW);
digitalWrite(led_V2, LOW);
delay(ritardo/2);
}
