Ciao a tutti, sto lavorando a un progetto per cui devo gestire contemporaneamente un servocomando e un sistema di led.
Il concetto é semplice: quando il servo ha aperto del tutto un diaframma, se ancora non c'è abbastanza luce dentro un ambiente, il led inizia gradualmente a illuminarsi.
Nello script ho ottenuto il risultato mappando un valore in due sottovalori, da 0 a 85 per i gradi di apertura desiderati del servo e da 85 a 340 (cioé 256 valori) per il led.
La cosa strana é che, nonostante la porta seriale mi confermi che i valori del led salgono gradualmente dopo che il servo è a 85, questo si accende solo una volta raggiunto il 255.
Ho notando che disattivando, nel setup, la connessione al servo, il led si accende invece gradualmente, come dovrebbe.
Che ci sia qualche conflitto nel gestire i due pwm in contemporanea?
Grazie a tutti.
#include <Servo.h>
Servo myservo;
const int analogInPin = A5; // potenziometro
const int analogOutPin = 10; // led
int sensorValue = 0; //potenziometro
int outputValue = 0;
int led = 0;
int servo = 0;
void setup() {
Serial.begin(9600);
myservo.attach(9); // se disattivato il led si illumina gradualmente
pinMode(analogOutPin,OUTPUT);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 340);
servo = outputValue;
if (servo > 85)
{servo = 85;}
led = map (outputValue, 85, 340, 0, 255);
if (outputValue < 85)
{led = 0;}
myservo.write(servo);
analogWrite(analogOutPin, led);
Serial.print("potenziometro = " );
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.print(outputValue);
Serial.print("\t servo= ");
Serial.print(servo);
Serial.print("\t led = ");
Serial.println(led);
delay(15);
}