Una buona giornata ragazzi,
sono qui per chiedervi cortesemente un aiuto,
spiego il mio problema, e cosa vorrei fare.
allego schema ed il programma,
con questo programma riesco ad leggere la pressione del pulsante (solo la prima volta) che accende un led,
poi ovviamente i bait cambiano di stato ed non riesco più a leggere il pulsante,
domanda:
e possibile leggere solo i primi 4 bait?
se si cortesemente mi potrete dare qualche indicazione sul come fare.
Mille grazie a chi mi può aiutare.
#include "Arduino.h"
#include <Wire.h>
#define PCF8574 0x20
const byte led_1 = 0xEF;
const byte led_2 = 0xDF;
const byte led_3 = 0xBF;
const byte led_4 = 0x7F;
const byte pul_1 = 0xFE;
const byte pul_2 = 0xFD;
const byte pul_3 = 0xFB;
const byte pul_4 = 0xF7;
byte tasto;
volatile byte counter = 0;
bool rstpcf;
unsigned long oldtasto;
void reset_INT_pcf();
void statotasto();
void leggitasto();
void setup() {
Wire.begin();
Serial.begin(9600);
reset_INT_pcf();
attachInterrupt(0, statotasto, FALLING);
}
void loop() {
leggitasto();
delay(100);
}
void leggitasto() {
if (counter == 1) {
if (millis() - oldtasto >= 300) {
Wire.beginTransmission(PCF8574);
Wire.requestFrom(PCF8574, 1);
if (Wire.available())
tasto = Wire.read();
rstpcf = true;
delay(100);
Serial.print("Tasto usato ");
Serial.println(tasto, HEX);
switch (tasto) {
Serial.println("OK");
case pul_1:
Wire.write(led_1);
break;
case pul_2:
Wire.write(led_2);
break;
case pul_3:
Wire.write(led_3);
break;
case pul_4:
Wire.write(led_4);
break;
}
oldtasto = millis();
Wire.endTransmission();
}
} else if (rstpcf == true) {
counter = 0;
reset_INT_pcf();
rstpcf = false;
Serial.println("OK2");
}
}
void reset_INT_pcf() {
Wire.beginTransmission(PCF8574);
Wire.requestFrom(PCF8574, 1);
if (Wire.available()) {
tasto = Wire.read();
Wire.write(0xFF);
Wire.endTransmission();
tasto = 0;
}
}
void statotasto() {
counter++;
}type or paste code here