Salve a tutti,
vorrei avere un chiarimento sulla programmazione degli shift register.
La board in uso è una Arduino Uno R3.
Ciò che questo sketch dovrebbe fare è:
-Leggere quanti impulsi arrivano al pin 11
-Printare il valore della variabile rpm
-Far accendere una serie di 24 led, collegati a 3 shift register 74HC595 in daisy chain, in base al valore di rpm (che si sposta da 0 a 8200, quindi un led si somma al precedente ogni 340rpm).
Questo è il codice (schifezza) prodotto fin'ora, siate buoni...
Il problema è che non so proprio come commutare lo stato delle porte degli shift register, ho visto vari tutorial, ma continuo a non venirne a capo...
Al posto di tutti quegli "if" poi, sarebbe carino poter usare una funzione lineare tipo "map", ma non saprei come infilarcela...
Idee e consigli?
int P_latch = 8;
int P_clock = 12;
int P_data = 11;
int sensorerpm = 11;
unsigned long rpm;
void setup() {
// put your setup code here, to run once:
pinMode(sensorerpm, INPUT);
pinMode(P_latch, OUTPUT);
pinMode(P_clock, OUTPUT);
pinMode(P_data, OUTPUT);
}
void loop() {
rpm = pulseIn(sensorerpm, HIGH);
if (rpm <= 340) {
}
if (340 < rpm <= 680) {
}
if (680 < rpm <= 1020) {
}
if (1020 < rpm <= 1360) {
}
if (1360 < rpm <= 1700) {
}
if (1700 < rpm <= 2040) {
}
if (2040 < rpm <= 2380) {
}
if (2380 < rpm <= 2720) {
}
if (2720 < rpm <= 3060) {
}
if (3060 < rpm <= 3400) {
}
if (3400 < rpm <= 3740) {
}
if (3740 < rpm <= 4080) {
}
if (4080 < rpm <= 4420) {
}
if (4420 < rpm <= 4760) {
}
if (4760 < rpm <= 5100) {
}
if (5100 < rpm <= 5440) {
}
if (5440 < rpm <= 5780) {
}
if (5780 < rpm <= 6120) {
}
if (6120 < rpm <= 6460) {
}
if (6460 < rpm <= 6800) {
}
if (6800 < rpm <= 7140) {
}
if (7140 < rpm <= 7480) {
}
if (7480 < rpm <= 7820) {
}
if (7820 < rpm) {
}
Serial.print("rpm ");
Serial.print(rpm);
}