Ciao a tutti,
mi sto interfacciando al mondo di arduino da poco, come detto nella presentazione in un altro post.
Attualmente sto cercando di rilevare la velocità di un motorino elettrico attraverso il sensore LM393, il quale fa passare una rotella ( che ho stampato in 3d e attaccato all'albero del motorino ) al suo interno e rileva in base a quanti spazi ci sono nella rotella una serie di high e low che poi trasmette ad arduino.
Ho trovato uno sketch in internet, e finchè uso il monitor seriale nessun problema.
Quando invece provo ad inserire anche il monitor lcd mediante i2c non mi funziona più ne il monitor seriale ne tantomeno il monitor lcd ( che rimane semplicemente retroilluminato ).
di seguito lo sketch, premetto che non ho ancora capito bene il linguaggio di arduino, quindi tante funzioni mi sono ancora ignote.. se qualcuno è così gentile da darci un occhio e vedere dove sbaglio mi fa un grande favore, penso che sia solo un problema di dove posizionare i comandi per il monitor...
Il passo successivo sarebbe quello di far apparire 2 righe, di cui una sarà la velocità massima rilevata e che si aggiorni ogni volta che la stessa viene superata.
#include "TimerOne.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,4);
unsigned int counter=0; // Attacca il pin D0 del sensore al pin 2 di arduino ( ok il pin 2, non lo 0 )
void docount() // counts from the speed sensor
{counter++; // increase +1 the counter value
}
void timerIsr(){
Timer1.detachInterrupt(); //stop the timer
int rotation = (counter / 10); // divide by number of holes in Disc
lcd.print("Motor Speed: ");
Serial.print("Motor Speed: ");
lcd.print(rotation*60,DEC);
Serial.print(rotation*60,DEC);
Serial.println(" Rpm");
counter=0; // reset counter to zero
Timer1.attachInterrupt( timerIsr ); //enable the timer
}
void setup()
{
lcd.init();
lcd.backlight();
Serial.begin(9600);
Timer1.initialize(500000); // set timer for half sec
attachInterrupt(0, docount, RISING); // increase counter when speed sensor pin goes High
Timer1.attachInterrupt( timerIsr ); // enable the timer
}
void loop()
{
}
grazie
Riccardo