16-Channel 5V Relay Shield Module For Arduino

Arduino specifieke Software
Berichten: 2
Geregistreerd: 01 Dec 2013, 22:26

16-Channel 5V Relay Shield Module For Arduino

Berichtdoor Maxxpower1989 » 01 Dec 2013, 22:46

Hallo Laat ik me aller eerste voor stellen:
Ik ben Martijn een 25 jaar oud werkende als storing monteur met een intresse in electronica en arduino's ook al ben ik hier een totale noob ik zeg maar.
Voor een vorig project van me heb ik een Arduino mega rev3 gebruikt in combinatie met een 2 tal van de volgende relais shields:
16-Channel 5V Relay Shield Module For Arduino ik gebruik deze om een 32 12 volt lampjes te schakelen in een project van me.
Maar wat ik graag zou willen en het moet volgens mij ook mogelijk zijn om deze lampjes te schakelen of nog meer zelf met 1 relais shield.
Dit door middel van verschillende pinnen in matrix form te schakelen als het ware.
Dit heb ik eerder geprobeerd maar is toen der tijd totaal mislukt.
Iemand een idee hoe ik dit nu het beste aan kan passen.
Hier onder trouwens de code die ik nu gebruikt.
Als ik dit topic verkeerd geplaats heb verplaats hem gerust

/* Simple Serial ECHO script : Written by ScottC 03/07/2012 */

/* Use a variable called byteRead to temporarily store
the data coming from the computer */
/*
Simpel scriptje voor de Arduino Uno om deze aan te sluiten op de pc en te bedienen met PyroignitionControle te vinden op http://blamaster.bplaced.net/Joomla/
*/

const int cue1 = 22;
const int cue2 = 23;
const int cue3 = 24;
const int cue4 = 25;
const int cue5 = 26;
const int cue6 = 27;
const int cue7 = 28;
const int cue8 = 29;
const int cue9 = 30;
const int cue10 = 31;
const int cue11 = 32;
const int cue12 = 33;
const int cue13 = 34;
const int cue14 = 35;
const int cue15 = 36;
const int cue16 = 37;
const int cue17 = 38;
const int cue18 = 39;
const int cue19 = 40;
const int cue20 = 41;
const int cue21 = 42;
const int cue22 = 43;
const int cue23 = 44;
const int cue24 = 45;
const int cue25 = 46;
const int cue26 = 47;
const int cue27 = 48;
const int cue28 = 49;
const int cue29 = 50;
const int cue30 = 51;
const int cue31 = 52;
const int cue32 = 53;

long fire_delay = 100; // De tijd dat er stroom door de relay of mosfet heen gaat. Normaal gesproken voor prof onstekers 100 MS indien visco ontstekers worden gebruikt dan wordt minimaal 2 Seconden aangeraden.
byte input[4]; // Hier gaan we de inkomende serieele data opslaan. Omdat we met 16 kanalen werken maken we een array van 2 bytes.
byte byteRead;

void setup() {
// Turn the Serial Protocol ON

pinMode(cue1, OUTPUT); //Kanaal 1
pinMode(cue2, OUTPUT); //Kanaal 2
pinMode(cue3, OUTPUT); //Kanaal 3
pinMode(cue4, OUTPUT); //Kanaal 4
pinMode(cue5, OUTPUT); //Kanaal 5
pinMode(cue6, OUTPUT); //Kanaal 6
pinMode(cue7, OUTPUT); //Kanaal 7
pinMode(cue8, OUTPUT); //Kanaal 8
pinMode(cue9, OUTPUT); //Kanaal 9
pinMode(cue10, OUTPUT); //Kanaal 10
pinMode(cue11, OUTPUT); //Kanaal 11
pinMode(cue12, OUTPUT); //Kanaal 12
pinMode(cue13, OUTPUT); //Kanaal 13
pinMode(cue14, OUTPUT); //Kanaal 14
pinMode(cue15, OUTPUT); //Kanaal 15
pinMode(cue16, OUTPUT); //Kanaal 16
pinMode(cue17, OUTPUT); //Kanaal 17
pinMode(cue18, OUTPUT); //Kanaal 18
pinMode(cue19, OUTPUT); //Kanaal 19
pinMode(cue20, OUTPUT); //Kanaal 20
pinMode(cue21, OUTPUT); //Kanaal 21
pinMode(cue22, OUTPUT); //Kanaal 22
pinMode(cue23, OUTPUT); //Kanaal 23
pinMode(cue24, OUTPUT); //Kanaal 24
pinMode(cue25, OUTPUT); //Kanaal 25
pinMode(cue26, OUTPUT); //Kanaal 26
pinMode(cue27, OUTPUT); //Kanaal 27
pinMode(cue28, OUTPUT); //Kanaal 28
pinMode(cue29, OUTPUT); //Kanaal 29
pinMode(cue30, OUTPUT); //Kanaal 30
pinMode(cue31, OUTPUT); //Kanaal 31
pinMode(cue32, OUTPUT); //Kanaal 32

Serial.begin(9600);
}

void loop() {

Serial.flush();

while( Serial.available() < 4 )
{
// Wachten tot er 4 karakters zijn ontvangen.
}
for (int i=0; i < 4; i++)
{
input[i] = Serial.read(); // Zet de karakters in de Array.
}

delay(10);

switch (input[2])
{

case 1:
digitalWrite(cue1,HIGH);
delay(fire_delay);
digitalWrite(cue1,LOW);
break;

case 2:
digitalWrite(cue2,HIGH);
delay(fire_delay);
digitalWrite(cue2,LOW);
break;

case 3:
digitalWrite(cue3,HIGH);
delay(fire_delay);
digitalWrite(cue3,LOW);
break;

case 4:
digitalWrite(cue4,HIGH);
delay(fire_delay);
digitalWrite(cue4,LOW);
break;

case 5:
digitalWrite(cue5,HIGH);
delay(fire_delay);
digitalWrite(cue5,LOW);
break;

case 6:
digitalWrite(cue6,HIGH);
delay(fire_delay);
digitalWrite(cue6,LOW);
break;

case 7:
digitalWrite(cue7,HIGH);
delay(fire_delay);
digitalWrite(cue7,LOW);
break;

case 8:
digitalWrite(cue8,HIGH);
delay(fire_delay);
digitalWrite(cue8,LOW);
break;

case 9:
digitalWrite(cue9,HIGH);
delay(fire_delay);
digitalWrite(cue9,LOW);
break;

case 10:
digitalWrite(cue10,HIGH);
delay(fire_delay);
digitalWrite(cue10,LOW);
break;

case 11:
digitalWrite(cue11,HIGH);
delay(fire_delay);
digitalWrite(cue11,LOW);
break;

case 12:
digitalWrite(cue12,HIGH);
delay(fire_delay);
digitalWrite(cue12,LOW);
break;

case 13:
digitalWrite(cue13,HIGH);
delay(fire_delay);
digitalWrite(cue13,LOW);
break;

case 14:
digitalWrite(cue14,HIGH);
delay(fire_delay);
digitalWrite(cue14,LOW);
break;

case 15:
digitalWrite(cue15,HIGH);
delay(fire_delay);
digitalWrite(cue15,LOW);
break;

case 16:
digitalWrite(cue16,HIGH);
delay(fire_delay);
digitalWrite(cue16,LOW);
break;

case 17:
digitalWrite(cue17,HIGH);
delay(fire_delay);
digitalWrite(cue17,LOW);
break;

case 18:
digitalWrite(cue18,HIGH);
delay(fire_delay);
digitalWrite(cue18,LOW);
break;

case 19:
digitalWrite(cue19,HIGH);
delay(fire_delay);
digitalWrite(cue19,LOW);
break;

case 20:
digitalWrite(cue20,HIGH);
delay(fire_delay);
digitalWrite(cue20,LOW);
break;

case 21:
digitalWrite(cue21,HIGH);
delay(fire_delay);
digitalWrite(cue21,LOW);
break;

case 22:
digitalWrite(cue22,HIGH);
delay(fire_delay);
digitalWrite(cue22,LOW);
break;

case 23:
digitalWrite(cue23,HIGH);
delay(fire_delay);
digitalWrite(cue23,LOW);
break;

case 24:
digitalWrite(cue24,HIGH);
delay(fire_delay);
digitalWrite(cue24,LOW);
break;

case 25:
digitalWrite(cue25,HIGH);
delay(fire_delay);
digitalWrite(cue25,LOW);
break;

case 26:
digitalWrite(cue26,HIGH);
delay(fire_delay);
digitalWrite(cue26,LOW);
break;

case 27:
digitalWrite(cue27,HIGH);
delay(fire_delay);
digitalWrite(cue27,LOW);
break;

case 28:
digitalWrite(cue28,HIGH);
delay(fire_delay);
digitalWrite(cue28,LOW);
break;

case 29:
digitalWrite(cue29,HIGH);
delay(fire_delay);
digitalWrite(cue29,LOW);
break;

case 30:
digitalWrite(cue30,HIGH);
delay(fire_delay);
digitalWrite(cue30,LOW);
break;

case 31:
digitalWrite(cue31,HIGH);
delay(fire_delay);
digitalWrite(cue31,LOW);
break;

case 32:
digitalWrite(cue32,HIGH);
delay(fire_delay);
digitalWrite(cue32,LOW);
break;

}
delay(10);
Serial.flush();

/* check if data has been sent from the computer: */
if (Serial.available()) {
/* read the most recent byte */
byteRead = Serial.read();
/*ECHO the value that was read, back to the serial port. */
Serial.write(byteRead);
}
}

Advertisement

Berichten: 4072
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 16-Channel 5V Relay Shield Module For Arduino

Berichtdoor shooter » 01 Dec 2013, 23:29

als er telkens maar een lamp aan hoeft te zijn dan kun je een matrix gebruiken een relaisset aan de plus en de andere aan de min
echter multiplexen etc, dat gaat niet met relais. maar vuurwerk gaat er prima mee, dat is een pulsssturing
paul deelen
shooter@home.nl

Berichten: 2
Geregistreerd: 01 Dec 2013, 22:26

Re: 16-Channel 5V Relay Shield Module For Arduino

Berichtdoor Maxxpower1989 » 01 Dec 2013, 23:36

Sorry ben nogal een noob met arduino en het is inderdaad voor vuurwerk ja heb de code die erbij staat met moeite werkende gekregen en heb niet echt en idee hoe het te programmeren.

Berichten: 4
Geregistreerd: 05 Dec 2013, 03:05

Re: 16-Channel 5V Relay Shield Module For Arduino

Berichtdoor albert-geert » 05 Dec 2013, 19:15

ik heb het programma een beetje vereenvoudigd dit werkt namelijk een beetje sneller en het is een stuk overzichtelijker om te analyseren.
als vuistregel kun je het handigst als je telkens hetzelfde moet uitvoeren je het beste gebruik kan maken van een for loop in combinatie met een array.
de reden dat ik de invoer - 1 heb gedaan is omdat in het eerste programma vanaf ceu1 word geteld en de array begint bij 0.
het kan zijn dat er ergens nog een klein foutje in is geslopen ik heb dit ook maar even tussendoor in elkaar geprutst.


Code: Alles selecteren
const int ceu[32]={22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53};

long fire_delay = 100; // De tijd dat er stroom door de relay of mosfet heen gaat. Normaal gesproken voor prof onstekers 100 MS indien visco ontstekers worden gebruikt dan wordt minimaal 2 Seconden aangeraden.
byte input[4]; // Hier gaan we de inkomende serieele data opslaan. Omdat we met 16 kanalen werken maken we een array van 2 bytes.

void setup() {

for(int i=0; i<32; i++){
pinMode(ceu[i], OUTPUT);
}

Serial.begin(9600); //seriële protocol
}

void loop() {
if (Serial.available()) {
for (int i=0; i < 4; i++)
{
input[i] = Serial.read(); // Zet de karakters in de Array.
}}

delay(10);

digitalWrite(cue[input[2]-1],HIGH);
delay(fire_delay);
digitalWrite(cue[input[2]-1],LOW);


delay(10);
}

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: uwevqutuq en 6 gasten