Sari la conținut
ELFORUM - Forumul electronistilor

RELEU ACTIONAT DE BUTON TOUCH PRIN ARDUINO


florinangeru

Postări Recomandate

Eu fac altfel cu butoanele, activez animalu' cînd iau craca de pe el. Cod în C, că d-ăsta ştiu.

#define DEBOUNCE   30if ((PORTB & BIT0) == 0){  while ((PORTB & BIT0) == 0)  {    delay_ms(DEBOUNCE);  }  // Aici începe codul pentru acţiunea butonului}
Link spre comentariu
  • 3 săptămâni mai târziu...
  • Răspunsuri 18
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • florinangeru

    9

  • Ticu

    4

  • Liviu M

    3

  • script22

    2

Top autori în acest subiect

Imagini postate

Salutare tuturor,

Dupa indelungi teste si batai de cap am ajuns la rezultatul final :101 . Am postat codul, schema finala (de fapt e cam aceasi cu ce-a initiala) si un link catre filmuletul in care prezint functionarea releului. Daca se doreste se mai poate adauga un led si intre pini 13 - GND arduino.

Multumesc tuturor de sugestii si ajutor, iar celor ce doresc sa-l realizeze ..... succes :).

 

 

 

// Test Relay signal when button is pressed

// Use PIN 7 to send signal to relay

// Turn on LED when the button is pressed to test Sketch code

// and keep it on after it is released

// including simple de-bouncing

//

 

#define LED 13 // the pin for the LED

#define BUTTON 2 // the input pin where the pushbutton is connected

#define RELAY 7 // PIN for relay signal

 

int val=0; // val will be used to store the state

// of the input pin

int old_val=0; // this variable stores the previous

// value of "val"

int state=0; //0=LED off and 1 = LED on

 

void setup(){

pinMode(LED, OUTPUT); // tell arduino LED is an output

pinMode(BUTTON, INPUT); // and BUTTON is an input

pinMode(RELAY, OUTPUT); // tells arduino RELAY is an output

}

 

void loop(){

val=digitalRead(BUTTON); // read input value and store it -- new input

 

// check if there was a transition

if ((val==HIGH) && (old_val==LOW)){

state = 1 - state;

delay(10);

}

 

old_val=val; // val is now old, let's store it

 

if (state == 1){

digitalWrite(LED,HIGH); // turn LED ON

digitalWrite(RELAY,HIGH); // turn RELAY ON

}else{

digitalWrite(LED,LOW); // turn LED OFF

digitalWrite(RELAY,LOW); // turn RELAY OFF

}

}

post-24493-139829523468_thumb.jpg

Link spre comentariu

Atentie delay este 10ms daca il lasati asa mai face figuri eu l-am setat la 150 si merge perfect dar in functie de releu trebuie sa testati voi valoarea ideala :). Spor la treaba.

Link spre comentariu
  • 4 săptămâni mai târziu...

if portb.1 = 0 thenwaitms 3

La ce-s bune alea 3 ms?
cand sunt contactele foarte apropiate sar putea accidental genera mult mai multe in cazu asta ledu o sa stea aprins chior asemanator cu un pwm
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări