Arduino relais schakelen

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 2
Geregistreerd: 18 Apr 2014, 11:16

Arduino relais schakelen

Berichtdoor Robert995 » 18 Apr 2014, 11:30

Hallo allemaal,

Ik zal me eerst even voorstellen. Ik ben Robert en ik heb via school een arduino MEGA 2560 gekocht omdat dit me erg leuk leek!

ik wil nu thuis er mee gordijnen mee dicht doen het systeem wat ik wil gaan installeren maat voor de rest niks uit! maar ik wil 2 relais gebruiken om ze open en dicht te doen. nu wil ik dit ook via bluetooth doen! maar ik heb een probleempje.

Mischien is dit voor jullie gesneden koek maar ik zou er erg blij mee zijn als het verholpen kan worden. Ik heb nu een simpel programma geschreven maar het lijkt alsof mijn arduino hem te traag leest! ik moet meestal heel wat keer op de knop drukken voordat hij schakelt de ene keer is dat gelijk maar de andere x moet ik 10 keer drukken. Als ik 1 relay gebruik heb ik dat probleem niet. Ik heb het via bluetooth getest en via de seriele monitor. Waar zou dit aan kunnen liggen? wat zou ik er aan kunnen doen?

Hier het programma voor de duidelijkheid;)

int pin1 = 10;
int pin2 = 11;
int pin3 = 12;
int pin4 = 13;

void setup(){
Serial.begin(9600);
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(pin4,OUTPUT);
Serial.println("goedendag");
}

void loop(){

if((Serial.read())=='a')
{
if(digitalRead(pin1)==LOW)
{
digitalWrite(pin1,HIGH);
Serial.println("Turned 1 ON!");
}
else
{
digitalWrite(pin1,LOW);
Serial.println("Turned 1 OFF!");
}
}
if((Serial.read())=='b')
{
if(digitalRead(pin2)==LOW)
{
digitalWrite(pin2,HIGH);
Serial.println("Turned 2 ON!");
}
else
{
digitalWrite(pin2,LOW);
Serial.println("Turned 2 OFF!");
}
}
if((Serial.read())=='c')
{
if(digitalRead(pin2)==LOW)
{
digitalWrite(pin2,HIGH);
Serial.println("Turned 3 ON!");
}
else
{
digitalWrite(pin2,LOW);
Serial.println("Turned 3 OFF!");
}
}
}

alvast hartelijk bedankt;)

groeten robert

Advertisement

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: Arduino relais schakelen

Berichtdoor ercmrj » 18 Apr 2014, 14:37

Robert, gebruik volgende keer codeweergave dat leest wat prettiger.

Probeer dit eens:

Code: Alles selecteren
int pin1 = 10;
int pin2 = 11;
int pin3 = 12;
int pin4 = 13;

void setup(){
Serial.begin(9600);
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(pin4,OUTPUT);
Serial.println("goedendag");
}

void loop(){
char ch=Serial.read();
  {
     switch (ch)
     {
      case 'a' :
        {digitalWrite(pin1,!digitalRead(pin1));
         Serial.print("pin1: ");Serial.println(digitalRead(pin1));}
        break;
      case 'b':
        {digitalWrite(pin2,!digitalRead(pin2));
         Serial.print("pin2: ");Serial.println(digitalRead(pin2));}
        break;
      case 'c':
        {digitalWrite(pin3,!digitalRead(pin3));
         Serial.print("pin3: ");Serial.println(digitalRead(pin3));}
        break;
      default:
        {}
      }
}
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino relais schakelen

Berichtdoor nicoverduin » 18 Apr 2014, 14:57

Zal ongetwijfeld aan mij liggen maar:
a) Dit programma stuurt 3 pinnen aan????
b) Geen bluetooth te bekennen???
c) Als je relais aanstuurt, gebruik je daar voor een relay driver of ga je rechtstreeks vanuit de pin het relais aansturen.... Want dan zou je nog wel eens een digital pin kunnen uitfikken....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 2
Geregistreerd: 18 Apr 2014, 11:16

Re: Arduino relais schakelen

Berichtdoor Robert995 » 18 Apr 2014, 14:59

Hallo,

Hartelijk bedankt het werkt perfect;)

al1 ga ik nog even uitzoeken wat u nou veranderd heeft

groeten robert;)

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino relais schakelen

Berichtdoor nicoverduin » 18 Apr 2014, 15:31

Nou als ik ff gauw door de wijzigingen van Emcri kijk dan is dat wel duidelijk. Ik dacht dat hij zondermeer het programma hetzelfde had gelaten :)
Maar in het originele programma die je een Serial.Read en test je of dat het character geeft dat je zoekt. Zo ja dan werkt het wel. Zo nee dan gaat hij WEER LEZEN en leest hij het volgende karakter.
Ecmri heeft in zijn programma het beter aangepakt:
Lees een keer (1x) een character
En gaat daarna testen of dat karakter een a,b of c is.
Overigens zitten daar nog wat overbodige accolades in. En teveel creëert ook weer vaak verwarring alsmede meerdere statements op een regel dus

Code: Alles selecteren
      case 'a' :
        {digitalWrite(pin1,!digitalRead(pin1));
         Serial.print("pin1: ");Serial.println(digitalRead(pin1));}
        break;


zou ik schrijven als:

Code: Alles selecteren
      case 'a' :
        digitalWrite(pin1,!digitalRead(pin1));
        Serial.print("pin1: ");
        Serial.println(digitalRead(pin1));
        break;


Beide zijn goed maar je mag het hele scherm gebruiken om je code te schrijven. :)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 24 gasten