Nieuw met een vraag

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 7
Geregistreerd: 18 Jan 2018, 14:43

Nieuw met een vraag

Berichtdoor Erik78 » 18 Jan 2018, 14:56

Hallo Forumleden. Ik ben Erik uit Veenendaal en ben nieuw op het gebied van Arduino. Recent heb ik een starterskit aangeschaft en al wat schakelingen in elkaar kunnen zetten zoals wat leds en een tekst op een display. Ik heb echter een vraag en hoop dat iemand mij verder kan helpen.
Ik heb een schakelkast met een 4 ouderwetse standenschakelaar (6 deks) Deze gebruik ik om audio, microfoon en 4 leds te schakelen. Op mijn zelfbouwkastje zitten 4 leds, voor iedere stand 1. Nu wil ik hier graag een 16x2 display in zetten die er stand een bepaalde tekst aangeeft. Bijvoorbeeld in stand 1 (als led 1 brand) "apparaat 1" in stand 2 "apparaat 2 etc etc. Op de standenschakelaar staat 13.8 volt. Dus met een omvormingsprintje is deze wel om te zetten naar 5 of 3,3 volt. Echter zou ik niet weten hoe ik hiervoor de arduino uno moet programmeren en hoe ik het beste de standenschakelaar kan aansluiten op de arduino. Is er iemand die suggesties heeft ?? Hier wat afbeeldingen wat hetgeen ik in elkaar geknutseld heb.
Bijlagen
IMG_4342 (Small).jpg
IMG_4342 (Small).jpg (91.79 KiB) 6924 keer bekeken
IMG_4341 (Small).jpg
IMG_4341 (Small).jpg (94.81 KiB) 6924 keer bekeken
IMG_4337 (Small).jpg
IMG_4337 (Small).jpg (72.55 KiB) 6924 keer bekeken

Advertisement

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

Re: Nieuw met een vraag

Berichtdoor shooter » 18 Jan 2018, 21:40

Heb je toevallig nog een dek over, dan kan je daar direct gnd opzetten en dan met 4 ingangen direct naar de arduino toe, gebruik dan INPUT_PULLUP, dan heb je direct binnen welke stand je schakelaar staat.

Een andere manier is om de leds los te maken en dan dit dek gebruiken, de leds hebben dan wel ieder een uitgang nodig en een andere weerstand, om op 5 Volt te kunnejn branden.
paul deelen
shooter@home.nl

Berichten: 7
Geregistreerd: 18 Jan 2018, 14:43

Re: Nieuw met een vraag

Berichtdoor Erik78 » 18 Jan 2018, 23:56

Hallo Paul, ik heb nog een dek over. 1 pootje is de basis, die in stand 1 (bij brandend led) verbonden is met vrije pen 1 etc etc. Ik vermoed dat ik van de uno de gnd pak en die op
de vrije basispoot van de schakelaar zet. Dan pak ik 4 ingangen, ik neem aan analog-in a1/a2/a3/a4 ??? Monteer de display aan de und en programmeer de boel.

Mocht er iemand zijn die een voorbeeld heeft voor de een dergelijke schakeling, of iets wat in de buurt komt zou ik reuze geholpen zijn.

Alvast bedankt.

Berichten: 7
Geregistreerd: 18 Jan 2018, 14:43

Re: Nieuw met een vraag

Berichtdoor Erik78 » 19 Jan 2018, 11:04

Via dit forum kwam zag ik een tip om gebruik te maken van circuito.io. Daar heb ik de schakeling gemaakt welke in de afbeelding te zien is. Of deze schakeling überhaupt bruikbaar is weet ik niet.
Ook heb ik de code wat aangepast zodat iedere uitgang zijn eigen tekst krijgt. Dit is wonderbaarlijk zelfs gelukt.

Ik weet nu alleen niet hoe ik ervoor moet zorgen dat de tekst verspringt van bijv apparaat 1 naar apparaat 2. Ik vermoed toch dat er iets ontbreekt in de schakeling.

Hulp is welkom.





cpp code
// Include Libraries
#include "Arduino.h"
#include "LiquidCrystal.h"
#include "Button.h"


// Pin Definitions
#define LCD_PIN_RS 2
#define LCD_PIN_E 3
#define LCD_PIN_DB4 4
#define LCD_PIN_DB5 5
#define LCD_PIN_DB6 6
#define LCD_PIN_DB7 7
#define PUSHBUTTON1_PIN_2 8
#define PUSHBUTTON2_PIN_2 9
#define PUSHBUTTON3_PIN_2 10
#define PUSHBUTTON4_PIN_2 11



// Global variables and defines

// object initialization
LiquidCrystal lcd(LCD_PIN_RS,LCD_PIN_E,LCD_PIN_DB4,LCD_PIN_DB5,LCD_PIN_DB6,LCD_PIN_DB7);
Button pushButton1(PUSHBUTTON1_PIN_2);
Button pushButton2(PUSHBUTTON2_PIN_2);
Button pushButton3(PUSHBUTTON3_PIN_2);
Button pushButton4(PUSHBUTTON4_PIN_2);



// define vars for testing menu
const int timeout = 10000; //define timeout of 10 sec
char menuOption = 0;
long time0;

// Setup the essentials for your circuit to work. It runs first every time your circuit is powered with electricity.
void setup()
{
// Setup Serial which is useful for debugging
// Use the Serial Monitor to view printed messages
Serial.begin(9600);
while (!Serial) ; // wait for serial port to connect. Needed for native USB
Serial.println("start");

// set up the LCD's number of columns and rows
lcd.begin(16, 2);
pushButton1.init();
pushButton2.init();
pushButton3.init();
pushButton4.init();
menuOption = menu();

}

// Main logic of your circuit. It defines the interaction between the components you selected. After setup, it runs over and over again, in an eternal loop.
void loop()
{


if(menuOption == '1') {
// LCD16X2 - Test Code
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("erik");
// Turn off the display:
lcd.noDisplay();
delay(500);
// Turn on the display:
lcd.display();
delay(500);
}
else if(menuOption == '2') {
// LCD16X2 - Test Code
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("apparaat 1");
// Turn off the display:
lcd.noDisplay();
delay(500);
// Turn on the display:
lcd.display();
delay(500);
// PushButton - Test Code
//Read pushbutton state.
//if button is not pushed function will return LOW (0). if it is pushed function will return HIGH (1).
//if debounce is not working properly try changing 'debounceDelay' variable in Button.h
//try also pushButton1.onPress(), .onRelease() and .onChange() for debounce.
bool pushButton1Val = pushButton1.read();
Serial.print(F("Val: ")); Serial.println(pushButton1Val);

}
else if(menuOption == '3') {
// LCD16X2 - Test Code
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("apparaat 2");
// Turn off the display:
lcd.noDisplay();
delay(500);
// Turn on the display:
lcd.display();
delay(500);
// PushButton - Test Code
//Read pushbutton state.
//if button is not pushed function will return LOW (0). if it is pushed function will return HIGH (1).
//if debounce is not working properly try changing 'debounceDelay' variable in Button.h
//try also pushButton2.onPress(), .onRelease() and .onChange() for debounce.
bool pushButton2Val = pushButton2.read();
Serial.print(F("Val: ")); Serial.println(pushButton2Val);

}
else if(menuOption == '4') {
// LCD16X2 - Test Code
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("apparaat 3");
// Turn off the display:
lcd.noDisplay();
delay(500);
// Turn on the display:
lcd.display();
delay(500);
// PushButton - Test Code
//Read pushbutton state.
//if button is not pushed function will return LOW (0). if it is pushed function will return HIGH (1).
//if debounce is not working properly try changing 'debounceDelay' variable in Button.h
//try also pushButton3.onPress(), .onRelease() and .onChange() for debounce.
bool pushButton3Val = pushButton3.read();
Serial.print(F("Val: ")); Serial.println(pushButton3Val);

}
else if(menuOption == '5') {
// LCD16X2 - Test Code
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("apparaat 4");
// Turn off the display:
lcd.noDisplay();
delay(500);
// Turn on the display:
lcd.display();
delay(500);
// PushButton - Test Code
//Read pushbutton state.
//if button is not pushed function will return LOW (0). if it is pushed function will return HIGH (1).
//if debounce is not working properly try changing 'debounceDelay' variable in Button.h
//try also pushButton4.onPress(), .onRelease() and .onChange() for debounce.
bool pushButton4Val = pushButton4.read();
Serial.print(F("Val: ")); Serial.println(pushButton4Val);

}



if (millis() - time0 > timeout)
{
menuOption = menu();
}

}



// Menu function for selecting the components to be tested
// Follow serial monitor for instrcutions
char menu()
{

Serial.println(F("\nWhich component would you like to test?"));
Serial.println(F("(1) LCD16X2"));
Serial.println(F("(2) PushButton"));
Serial.println(F("(3) PushButton"));
Serial.println(F("(4) PushButton"));
Serial.println(F("(5) PushButton"));
Serial.println(F("(menu) send anything else or press on board reset button\n"));
while (!Serial.available());

// Read data from serial monitor if received
while (Serial.available())
{
char c = Serial.read();
if (isAlphaNumeric(c))
{
if(c == '1')
Serial.println(F("Now Testing LCD16X2"));
else if(c == '2')
Serial.println(F("Now Testing PushButton"));
else if(c == '3')
Serial.println(F("Now Testing PushButton"));
else if(c == '4')
Serial.println(F("Now Testing PushButton"));
else if(c == '5')
Serial.println(F("Now Testing PushButton"));
else
{
Serial.println(F("illegal input!"));
return 0;
}
time0 = millis();
return c;
}
}
}
Bijlagen
schema (Custom).jpg
schema (Custom).jpg (57.22 KiB) 6888 keer bekeken

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

Re: Nieuw met een vraag

Berichtdoor nicoverduin » 19 Jan 2018, 11:49

De inputs zijn zwevend als ze niet aan GND hangen via de deck. Dus ofwel je definieert de inputs als INPUT_PULLUP (via pinMode) of je hangt aan elke i vianput van de buttons een 10K naar de 5V. Dat betekent wel dat LOW bij een button betekent dat hij is ingedrukt.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 18 Jan 2018, 14:43

Re: Nieuw met een vraag

Berichtdoor Erik78 » 19 Jan 2018, 15:58

Even overnieuw.

Ik heb nu het basiscontact van de standenschakelaar op gnd gezet van de uno. Van de standenschakelaar komen 4 draden af, die op pin 8/9/10/11 zitten. Ik heb geen idee waar ik de zogenaamde INPUT_PULLUP neer moet zetten. De code zoals hierboven zal niet meer kloppen omdat ik geen 4 pushbuttons meer gebruik, maar rechtstreeks met de standenschakelaar wil werken. Na een uur of 3 knutselen vraag ik weer om jullie hulp.

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

Re: Nieuw met een vraag

Berichtdoor nicoverduin » 19 Jan 2018, 20:23

Een button is in feite hetzelfde als een stand van een standenschakelaar. En ik zou eerst eens wat tutorials doen. Voorbeelden te over
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Nieuw met een vraag

Berichtdoor shooter » 19 Jan 2018, 21:35

er staat telkens een if menuoption, Dit veranderen in IF (digitalInput(a1)== LOW){hier de code om naar het display te schrijven: lcd.print......}
en uiteraard op de andere regels met A2 etc.
paul deelen
shooter@home.nl

Berichten: 7
Geregistreerd: 18 Jan 2018, 14:43

Re: Nieuw met een vraag

Berichtdoor Erik78 » 20 Jan 2018, 02:16

Bedankt, Ik ga er een nachtje over slapen,, ik kom er niet uit.
Hoe goed jullie reacties en bedoelingen ook zijn, het komt voor mij neer op hetzelfde als dat ik tegen mijn dochter van 4 zeg dat ze haar fietsband moet plakken en hiervoor even de bandenlichters uit de schuur moet pakken die in vakje 34 van de 3e ladenkast liggen maar ze kunnen ook in de rij eronder of erboven liggen.
(ik heb eigenlijk zelf wel lol om die zin ;-) )

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten