8 relay met 5x2 key pad

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 2
Geregistreerd: 17 Dec 2018, 20:11

8 relay met 5x2 key pad

Berichtdoor moegibike7 » 17 Dec 2018, 21:05

arduino layout 5x2 membrane keypad.jpg
layout
arduino layout 5x2 membrane keypad.jpg (29.18 KiB) 3879 keer bekeken
8 relays aansturen met een keypad , nu nog voor test met 3x4 keypad . laat een 5x2 keypad maken .
voorbeeld sketch gedownload en een beetje aangepast . deze sketch kwam met alle buttons op OFF zetten met button 0, ik wil de functie van de buttons veranderen .
dit wil ik graag hebben .

button 1 is relay ON bij indrukken en loslaten . pas bij weer indrukken en loslaten relay op OFF.
button 2 tot 0 wil ik als ik er op druk en vasthoud relay ON , bij loslaten van de button relay op OFF.

wie kan mij op weg helpen en de sketch hieronder aanpassen zodat het werkt zoals ik wil .

/***********************************************************
8 realay keypad 5x2
***********************************************************/
#include <Keypad.h>

const byte ROWS = 2;
const byte COLS = 5;

char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', '4', '5'},
{ '6','7', '8', '9', '0' }

};

byte rowPins[ROWS] = {5,4};
byte colPins[COLS] = {6,7,8,9,0};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

const int relayPin1 = 14;
const int relayPin2 = 15;
const int relayPin3 = 16;
const int relayPin4 = 17;
const int relayPin5 = 18;
const int relayPin6 = 19;
const int relayPin7 = 20;
const int relayPin8 = 21;


void setup(){
Serial.begin(9600);//Open serial
pinMode(relayPin1, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin2, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin3, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin4, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin5, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin6, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin7, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin8, OUTPUT); //initialize the relayPin as an output

}

void loop(){
char customKey = customKeypad.getKey();//Read Key data
if (customKey){
Serial.println(customKey); //send the key data by serial port (UART)
}
switch(customKey){

case '1':
digitalWrite(relayPin1, LOW); //drive relay closure conduction
break;
case '2':
digitalWrite(relayPin2, HIGH); //drive relay closure conduction
break;
case '3':
digitalWrite(relayPin3, HIGH); //drive relay closure conduction
break;
case '4':
digitalWrite(relayPin4, HIGH); //drive relay closure conduction
break;
case '5':
digitalWrite(relayPin5, HIGH); //drive relay closure conduction
break;
case '6':
digitalWrite(relayPin6, HIGH); //drive relay closure conduction
break;
case '7':
digitalWrite(relayPin7, HIGH); //drive relay closure conduction
break;
case '8':
digitalWrite(relayPin8, HIGH); //drive relay closure conduction
break;

default: break;
}
}
Laatst gewijzigd door moegibike7 op 17 Dec 2018, 21:27, in totaal 1 keer gewijzigd.

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: 8 relay met 5x2 key pad

Berichtdoor Koepel » 17 Dec 2018, 21:27

Hallo, welkom op dit forum.

Probeer dit voorbeeld eens: https://www.arduino.cc/en/Tutorial/StateChangeDetection.
Ik weet niet hoe dat samengaat met de Keypad library, dat heb ik nog niet bekeken.

Welk Arduino board gebruik je ?
Kun je een link geven naar je keypad ?
Wat voor relais heb je ?
Hebben alle knoppen elk een ander relais, of werken alle knoppen op hetzelfde relais ?
Welke keypad library gebruik je ? Kun je vertellen hoe je die geïnstalleerd hebt ? In de Keypad library zit een mogelijkheid om een verandering van een knop te detecteren. Maar die uitbreiding verschilt bij de verschillende Keypad libraries.

Kun je een test sketch voor een 3x4 keypad geven, zodat je het ook echt kunt testen.

Berichten: 2
Geregistreerd: 17 Dec 2018, 20:11

Re: 8 relay met 5x2 key pad

Berichtdoor moegibike7 » 17 Dec 2018, 23:05

board is 2560


keypad link https://nl.aliexpress.com/item/TZT-1-stks-Matrix-Array-12-Key-Membraan-Switch-Toetsenbord-Keyboard-Voor-Arduino-AVR-4x3-in/32908325004.html?spm=a2g0z.search0104.3.24.5baf2d27EFtmE3&ws_ab_test=searchweb0_0%2Csearchweb201602_3_10065_10068_5729913_319_317_10696_453_10084_454_10083_10618_10304_10307_10820_10301_10821_538_537_536_5730813_10843_10059_10884_10887_100031_321_322_10103%2Csearchweb201603_51%2CppcSwitch_0&algo_pvid=42f6340e-1a7c-4ea3-ba5e-cbd93dd9ee93&algo_expid=42f6340e-1a7c-4ea3-ba5e-cbd93dd9ee93-3


relay link

https://nl.aliexpress.com/item/5V-10A-8 ... 6455bb54b4

elke knop heeft een eigen relay in pin bezetting,
test sketch is met 0 button voor alle relays uit , aanzetten kan met button 1 tot 9 .

keypad is werkend , dit kan ik zien in de serial monitor . mijn 5x2 sketch werkt .

test sketch was werkend . 1 tot 9 button is high en 0 button is alles weer op low .
ik wil dus elke button relay high of low schakelen. wat inhoud , 1 x button klik is high , klik ik weer op de button dan moet die low gaan .andere buttons wil ik als ik button klik doe high gaan en als ik de button los laat low gaan .



/***********************************************************
File name: controlRelayByMatrixKeyboard.ino

Website: http://www.adeept.com
E-mail: support@adeept.com
Author: Tom
Date: 2017/03/14
***********************************************************/
#include <Keypad.h>

const byte ROWS = 4;
const byte COLS = 3;

char hexaKeys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};

byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

const int relayPin1 = 14;
const int relayPin2 = 15;
const int relayPin3 = 16;
const int relayPin4 = 17;
const int relayPin5 = 18;
const int relayPin6 = 19;
const int relayPin7 = 20;
const int relayPin8 = 21;

void setup(){
Serial.begin(9600);//Open serial
pinMode(relayPin1, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin2, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin3, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin4, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin5, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin6, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin7, OUTPUT); //initialize the relayPin as an output
pinMode(relayPin8, OUTPUT); //initialize the relayPin as an output
}

void loop(){
char customKey = customKeypad.getKey();//Read Key data
if (customKey){
Serial.println(customKey); //send the key data by serial port (UART)
}
switch(customKey){
case '0':
digitalWrite(relayPin1, LOW); //drive relay closure conduction
digitalWrite(relayPin2, LOW); //drive relay closure conduction
digitalWrite(relayPin3, LOW); //drive relay closure conduction
digitalWrite(relayPin4, LOW); //drive relay closure conduction
digitalWrite(relayPin5, LOW); //drive relay closure conduction
digitalWrite(relayPin6, LOW); //drive relay closure conduction
digitalWrite(relayPin7, LOW); //drive relay closure conduction
digitalWrite(relayPin8, LOW); //drive relay closure conduction
break;
case '1':
digitalWrite(relayPin1, HIGH); //drive relay closure conduction
break;
case '2':
digitalWrite(relayPin2, HIGH); //drive relay closure conduction
break;
case '3':
digitalWrite(relayPin3, HIGH); //drive relay closure conduction
break;
case '4':
digitalWrite(relayPin4, HIGH); //drive relay closure conduction
break;
case '5':
digitalWrite(relayPin5, HIGH); //drive relay closure conduction
break;
case '6':
digitalWrite(relayPin6, HIGH); //drive relay closure conduction
break;
case '7':
digitalWrite(relayPin7, HIGH); //drive relay closure conduction
break;
case '8':
digitalWrite(relayPin8, HIGH); //drive relay closure conduction
break;
default: break;
}
}

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: 8 relay met 5x2 key pad

Berichtdoor Koepel » 17 Dec 2018, 23:14

In de Keypad library zit een "Event". Dan wordt een functie aangeroepen als er iets verandert. Daarmee zou je dit vrij eenvoudig kunnen maken. Dan heb je het voorbeeld van de StateChangeDetection niet nodig, want dat zit al in de Keypad library.
Maar er zijn meerdere versies van de Keypad library, en die hebben een andere "Event" functie.

Zo'n relais board voldoet waarschijnlijk niet aan de regels om het voor 230V te gebruiken. De relais die er op zitten zijn waarschijnlijk erg goedkoop, en zeker niet geschikt voor 10A. Hou daar rekening mee. Als je een serieuze belasting wilt schakelen, dan heb je serieuze relais nodig.

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten