salve a tutti il mio problema puo sembrarvi banale ma non riesco a venirne a capo! devo regolare la velocita in pwm di un motore di un tapis roulant in base alle pulsazioni cardiache,ma non accade nulla! la velocità rimane la stessa forse o sbagliato il codice , l'interfacciamento è giusto con il programma fading funziona alla grande... ecco il codice vi prego aiutatemi
#include <hcf4511be.h>
hcf4511be unita(2,3,4,5);
hcf4511be deci(6,7,8,9);
int bpm;
int decine;
int centinaia;
int unit;
int A;
int tappetopin = 11;
const int CardioPin = A0;
const int ledPin = 13;
long oldMillis;
long oldMillis_antiBounce;
byte contatore = 0;
byte stato = 0;
byte ultimoStato = 0;
void setup() {
pinMode(CardioPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(12, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
oldMillis = millis();
oldMillis_antiBounce = oldMillis;
}
void loop() {
stato = digitalRead(CardioPin);
if (stato != ultimoStato) {
if (stato == HIGH) {
//sistole...fronte di salita...
digitalWrite(ledPin, HIGH);
if ( millis()- oldMillis_antiBounce > 10)
{ // se impiega meno di 10 millisecondi per cambiare di stato è un rimbalzo e non lo conto
contatore ++;
oldMillis_antiBounce = millis();
};
} else {
// else stato = low significa che sono in diastole
digitalWrite(ledPin, LOW);
}
ultimoStato = stato; // lo stato è variato
}
if ( millis()- oldMillis > 15000) {
//15 secodi di statistica... calcolo media
Serial.print ("bpm:");
Serial.println ( contatore * 4);
bpm= contatore*4;
centinaia= bpm/100;
A= bpm- (centinaia*100);
decine= A/10;
unit= A- (decine*10);
Serial.print ("CENTINAIA:");
Serial.println(centinaia);
Serial.print ("DECINE:");
Serial.println(decine);
Serial.print ("UNITA:");
Serial.println(unit);
unita.sendOut(unit);
deci.sendOut(decine);
if(centinaia > 0)
{
digitalWrite(12, HIGH);
}
else
{
digitalWrite(12,LOW);
}
contatore = 0;
oldMillis = millis();
oldMillis_antiBounce = oldMillis;
}
if ( 0 < bpm < 70)
{ analogWrite(tappetopin, 255);}
else if ( 70 < bpm < 80)
{ analogWrite(tappetopin, 229);}
else if ( 80 < bpm < 100)
{analogWrite(tappetopin, 204);}
else if ( 100 < bpm < 120)
{ analogWrite(tappetopin, 178);}
else if ( 120 < bpm < 140)
{ analogWrite(tappetopin, 153);}
else if ( 140 < bpm < 160)
{ analogWrite(tappetopin, 125);}
else if ( 160 < bpm)
{ analogWrite(tappetopin, 102);}
}