Aiuto su codice per fotoresistenza

Salve ragazzi,per passarci il tempo e imparare un po' ho deciso di mischiare un po' tutti i componenti presenti nello starter kit di arduino...adesso pero' sono impantanato nell'aggiunta del codice per il funzionamento della fotoresistenza.Il codice che ho scritto e finora testato e funziona e' il seguente:

int led_pin = 2;
int button_pin = 4;
int stato = LOW;
int Buzzer = 3; 
int redpin = 9;
int greenpin = 11;
int blupin = 10;


void setup() {
     pinMode(led_pin, OUTPUT);
     pinMode(button_pin, INPUT);
     pinMode(Buzzer, OUTPUT);
     pinMode(redpin, OUTPUT); 
     pinMode(greenpin, OUTPUT); 
     pinMode(blupin, OUTPUT);
     
}

     
void loop()
{
     int in1 = digitalRead(button_pin);
     
     if (in1 == HIGH){
             stato=!stato;
             digitalWrite(led_pin, stato);
     }

      delay(2000);
      
      if(in1 == HIGH){    

      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      } else {
      
      delay(10);
      
      }
}

Quello che vorrei fare e' inserire nel loop un controllo subito dopo quello sul pulsante,dove se la luminosita' e' scarsa allora parte la sequenza del lampeggio e del buzzer ad intermitenza;se invece la luminosita e' buona faro' partire un altra sequenza che ancora non ho preparato.Ho provato e riprovato inserendo un altro if..ma con scarsi risultati.Grazie anticipatamente

Leggi il valore della fotoresistenza e se é sotto un certo limite esegui una sequenza mentre é sopra un altra.
basta un semplice if-else

Ciao Uwe

Ho provato cosi…ma la sequenza parte sempre…c’e’ qualcosa che non va…

int led_pin = 2;
int button_pin = 4;
int stato = LOW;
int Buzzer = 3; 
int redpin = 9;
int greenpin = 11;
int blupin = 10;
int fotores = A0;
int Nota;


void setup() {
     pinMode(led_pin, OUTPUT);
     pinMode(button_pin, INPUT);
     pinMode(Buzzer, OUTPUT);
     pinMode(redpin, OUTPUT); 
     pinMode(greenpin, OUTPUT); 
     pinMode(blupin, OUTPUT);
     
}

     
void loop()
{
     int in1 = digitalRead(button_pin);
     
     Nota = (analogRead (fotores));
     
     if (in1 == HIGH){
             stato=!stato;
             digitalWrite(led_pin, stato);
     }

      delay(2000);
      
      if(in1 == HIGH){  
      
      if (Nota > 500){                  
 
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      } else {
      
      delay(10);
      
      }
      
      }
}

Che valore ti da la fotoresistenza? Fai un po di debug stampando il valore letto dalla fotoresistenza sul monitor seriale dell'IDE. Ciao Uwe

Come inserisco il controllo??

così dovrebbe funzionare (non testato)
caricalo e apri il serial monitor senza schiacciare pulsanti

int led_pin = 2;
int button_pin = 4;
int stato = LOW;
int Buzzer = 3; 
int redpin = 9;
int greenpin = 11;
int blupin = 10;
int fotores = A0;
int Nota;


void setup() {
     pinMode(led_pin, OUTPUT);
     pinMode(button_pin, INPUT);
     pinMode(Buzzer, OUTPUT);
     pinMode(redpin, OUTPUT); 
     pinMode(greenpin, OUTPUT); 
     pinMode(blupin, OUTPUT);
     Serial.begin (9600);
     
}

     
void loop()
{
     int in1 = digitalRead(button_pin);
     
     Nota = (analogRead (fotores));
     Serial.println(Nota);
delay(10);
     
     if (in1 == HIGH){
             stato=!stato;
             digitalWrite(led_pin, stato);
     }

      delay(2000);
      
      if(in1 == HIGH){  
      
      if (Nota > 500){                  
 
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      delay (500);
      
      tone(Buzzer,900 );
      
      digitalWrite(redpin,  HIGH);
      
      delay (500);
      
      noTone(Buzzer);
      
      digitalWrite(redpin,  LOW);
      
      } else {
      
      delay(10);
      
      }
      
      }
}

La fotoresistenza mi legge sempre 1023 con qualsiasi condizione di luce...come mai?? :roll_eyes:

http://pgdev.pighixxx.com/ABC/SET/s1.pdf controlla che sia collegata bene

Grazie mille…l’errore stava nel collegamento!!! :stuck_out_tongue:

Okk adesso dovrei aggiungere uno spostamento di 90°e e successivamente 180°w separati da una pausa di 5 secondi un motore servo.

Ho richiamato la libreria servo e aggiunto:

#include <Servo.h>

Servo Servo1;

Servo1.attach(5);

Il comando da utilizzare per spostare il motore dovrebbe essere:

Servo1.write(Gradi);

Dunque se voglio indicargli 90°e ad esempio come dovrei fare??Grazie