...si, casino totale (...e non intendo il film parodia di casino royale!)
bensì il mio sketch che posto qui da voi:
int valoretarato;
for(int i = 0; i<=255; i++)
{
spwm(i, Led_IR);
delay(1);
int sensorValue = digitalRead(Foto_TR);
if (sensorValue == 1)
{
valoretarato = i;
}
digitalWrite(Led_IR, 0);
}
delay(500);
Persistentspwm(i, Led_IR); //richiama funzione per pwm simulato
// setup_watchdog(9);
}
void loop()
{
if (f_wdt==1)
{ // wait for timed out watchdog / flag is set when a watchdog timeout occurs
f_wdt=0; // reset flag
//CODE HERE
unsigned long currentMillis = millis();
int sensorValue = digitalRead(Foto_TR);
sensorValue = !sensorValue;
if (sensorValue == 1)
{
DOA++;
if(DOA > 5)
{
analogWrite(Led_1, 64);
analogWrite(Led_2, 255);
delay(800);
analogWrite(Led_1, 0);
analogWrite(Led_2, 0);
}
}
if (DOA >= 5)
{
//do something
}
system_sleep(); //addormento il Tiny.
Il problema che devo risolvere è il seguente:
Allora: una volta calibrato il sensore come faccio nel setup(), devo leggerlo (e in questo caso invertire la sua uscita), ma proprio qui ci casca l'asino, ho collegato l'output del fotosensore al pin 3 (ovvero il 2) del mio attiny, e nel setup lo leggo come input...ecco lo schema usato:
Poi però una volta programmato l'attiny funziona in maniera "anomala"...sembra che il pin 2 (ovvero il 3) non riesca a leggere il mio input digitale...ho provato a cambiare tiny, ma nulla da fare, il problema persiste...
Avete idee?
...magari è una stupidata...ma ci ho perso l'intero pomeriggio...
Grazie.
Leggi in digitale sul pin analogico, ma le tue intenzioni sono di leggere lo stato digitale o la variazioni analogiche sul pin A0 che si vengono a creare dovute al fatto che piloti il led in PWM. Il PWM a cosa ti serve, vuoi variare la luminosità del led interno a quel componente schematizzato in foto che sembra un accoppiatore ottico. No non penso perchè quel led è alimentato in modo fisso, quindi non ci sarà cambio di stato in uscita su A0, dove troverai sempre un livello LOW.
1.) piloto in pwm il pin del led ir del sensore finché il sensore non visualizzare dopo di che setto il led con la luminosità trovata.
2.) poi dal pin 3 di attiny leggo lo stato digitale del sensore...ma qui ho dei problemi
Quel codice è incompleto.
Le info che dai sono inaccurate: parli di un "attiny" generico, quale? Parli di pin 3 poi però dici che è il 2 poi parli di A0.
...è l'autocorrettore del telefono che ogni tanto scrive degli strafalcioni
Allora, ecco lo sketch di prova completo, modificato e senza alcuni pezzi superflui:
const int Foto_TR = 3; //Pin Fototransistor
int UltimoStato_TR = LOW;
int StatoTR;
int Number;
long lastDebounceTime = 0;
long debounceDelay = 100;
const int Led_1 = 0; //Pin PWM Attiny
void setup() {
// put your setup code here, to run once:
pinMode(Foto_TR, INPUT);
}
void loop() {
int reading_Tr = digitalRead(Foto_TR);
if (reading_Tr != UltimoStato_TR)
{
lastDebounceTime = millis();
if (reading_Tr == LOW)
{
Number++;
}
}
if ((millis() - lastDebounceTime) > debounceDelay)
{
StatoTR = reading_Tr;
}
UltimoStato_TR = reading_Tr;
for(int i = 0; i< Number; i++)
{
analogWrite(Led_1, 255);
delay(300);
analogWrite(Led_1, 0);
}
// delay(1000);
}
Il tutto è collegato in questo modo:
Ma invece che mandare l'output del sensore al pin A0 di arduino lo mando al pin PB3 del mio Tiny. nulla di complicato...
E quel sensore che cosa dà in output? Perché se nello schema lo collegano ad un pin analogico, tu quel pin lo leggi in digitale? Non è che forse la tensione che fornisce resta nel campo indefinito dei valori per cui l'Attiny non riesce a leggerlo come stato HIGH?