Go Down

Topic: Problema contatore e comunicazione i2c attiny85 (Read 134 times) previous topic - next topic

Tripla-M

Ciao a tutti,

vi allego questo codice

Code: [Select]

#include <TinyWireS.h>

#define pin_in 3

int cont = 0;
int in = LOW;
int st = LOW;

void setup() {
  pinMode(pin_in, INPUT);
  TinyWireS.begin(0x02);
  TinyWireS.onRequest(tra); 
}

void loop() {
  in = digitalRead(pin_in);
  if(in != st){
    cont++;
    st = in;
    delay(150);
  }
}

void tra(){
  TinyWireS.send(cont);
  cont = 0;
}


Questo codice che esegue l' attiny85 deve semplicemente aumentare un contatore (cont) ogni volta che lo stato del pin 3 cambia da HIGH a LOW e viceversa: in pratica premo il pulsante e aumenta di uno, mollo il pulsante sale a due, premo il pulsante va a tre e via così... L'attiny comunica quante volte è cambiato lo stato sul pin all'arduino uno tramite protocollo i2c.
Questo è il codice che esegue l'arduino uno

Code: [Select]

#include <Wire.h>

int cont = 0;

void setup() {
  Serial.begin(115200);

  Wire.begin();
}

void loop() {
  Wire.requestFrom(0x02, 1);
  while(Wire.available()){
    cont = Wire.read();
  }
  Serial.println(cont);
  delay(7000);
}


Prima di caricare il codice sull'attiny, per comodità avevo usato un arduino nano, sostituendo la libreria TinyWireS con la Wire, per verificare che tutto funzionasse correttamente, e così è stato.

Allora ricambio la libreria e carico lo stesso codice sull'attiny, ma quando l'arduino uno va a fare la richiesta all'attiny, questo risponde che ha contato al massimo fino a due, anche se io ho premuto e mollato il pulsante 10 volte.

Ora io non so se l'attiny conta effettivamente fino a due o se c'è un problema di comunicazione, perchè con l'arduino nano tutto fila liscio, sia il contatore che la comunicazione, l'unica modifica nel codice è la libreria: TinyWireS per l' attiny; Wire per l'arduino nano.

Mi aiutate in questo problema?

Grazie in anticipo.


Go Up