delay rele con potenziometro

Salve a tutti, non sono un esperto di Arduino e pertanto ho un problema nella realizzazione di un progetto. perciò chiedo aiuto.

Voglio realizzare un progetto per il quale ho necessità di comandare un relè tramite un potenziometro in modo tale che per un determinato intervallo di valori del potenziometro il relè sia aperto e chiuso per un determinato lasso di tempo.

a questo scopo ho realizzato questo sketch:

const int potpin = A0; // pin potenziometro
const int rel2pin = 4; // pin del rele

int valpot = 0; // valore potenziometro
int rel2val = 0;  // stato del rele

void setup(){
  pinMode(rel2pin,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  valpot=analogRead(potpin);
  rel2val=map(valpot,20,200,0,255);
  analogWrite(rel2pin,rel2val);
  delay(1500);
  
  rel2val=map(valpot,201,400,0,255);
  analogWrite(rel2pin,rel2val);
  delay(3000);
  
  Serial.println(valpot);
}

come si vede ho cercato di fare in modo che per un valore compreso tra 20 e 200 il relè venga aperto per 1,5 secondi e per un valore tra 201 e 400 sia aperto per 3 secondi.

Il mio problema è quello di riuscire a far si che per gli stessi valori il relè sia aperto per quel lasso di tempo e chiuso per lo stesso tempo, cioè, ad esempio per i valori tra 20 e 200 vorrei che il relè fosse aperto per 1,5 secondi e chiuso per 1,5 secondi cosa che in realtà non avviene dato che il relè rimane spento per un tempo che non ho definito e accende per 1,5 secondi.

come posso fare a risolvere questo problema?qualcuno può aiutarmi o consigliarmi? grazie DD

ti fai 2 Blink without Delay con il ritardo desiderato, 2 variabili che vanno a 1 comandate dal potenziometro in base a la variabile che va a 1 associata al suo Blink without Delay fai funzionare il rele, se usi un relè meccanico fai presto a farlo schiattare accendendolo una volta al secondo

Per prima cosa dovresti leggere il regolamento, in particolare i punti 7, 8 e 9 --> http://forum.arduino.cc/index.php?topic=149082.0 Per secondo... benvenuto. :grin:

Come suggerito da Gingardu, guarda l'esempio del Blink without Delay che trovi nell'IDE. Supponendo che tu abbia un Arduino UNO, l'ultima versione disponibile è la 1.0.5. La trovi in "Download" qui su nella barra.

Il comando analogWrite non serve per il tuo scopo, puoi anche eliminarlo, anzi devi, visto che in quel modo bruceresti il relè in poco tempo. Devi usare il comando digitalWrite(pinrelè, HIGH) e digitalWrite(pinrelè, LOW) per accendere è spegnere il relè al momento desiderato. Per farlo inserisci nello sketch delle variabili come suggerito nel post precedente.

Ricorda di includere lo sketch con i tag CODE. Rende più leggibile il codice. Puoi anche rieditare i messaggi precedenti premendo su "modify".

innanzi tutto grazie!!

Stanotte proverò seguendo le vostre indicazioni.

Per non saper ne leggere ne scrivere chiedo quindi il mio sketch dovrebbe essere più o meno così'

void loop(){
  valpot=analogRead(potpin);
  rel2val=map(valpot,20,200,0,255);
  digitalWrite(rel2pin,HIGH);
  delay(1500);
digitalWrite(rel2pin,LOW);
  delay(1500);

ho capito giusto? Alla fine dovrò ripetere questa parte almeno 21 volte dato che vorrei riuscire a dare comandi per intervalli di tempo da 1/4 di secondo da 0 a 5 secondi

grazie ancora DD

Una soluzione potrebbe essere questa:

const int potpin = A0; // pin potenziometro
const int rel2pin = 4; // pin del rele

int valpot = 0;   // valore potenziometro
int delayval = 0;  // stato del rele

void setup()
{
    pinMode(rel2pin, OUTPUT);
    Serial.begin(9600);
}

void loop()
{
    valpot = analogRead(potpin);
    delayval = map(valpot, 0, 1023, 0, 5000);
    digitalWrite(rel2pin, HIGH);
    delay(delayval);
    digitalWrite(rel2pin, LOW);
    delay(delayval);
}

Grazie PaoloP!!!

Con il tuo aiuto ho risolto il primo dei molti problemi che dovrò affrontare per realizzare il mio progetto (il primo vero progetto dopo quelli di base per imparare un pò!!)

grazie ancora!! DD

salve. ho provato questo sketch e funziona.. vorrei aggiungere altro 3 potenziometri per usare sul rele'