Voorstellen en vraag m.b.t. Servos en keypad
Re: Voorstellen en vraag m.b.t. Servos en keypad
Hoe vind ik de sketch die hier bij hoort: https://bildr.org/2011/05/arduino-keypad/ ?
Kun je een foto maken van hoe je het hebt aangesloten (op de keypad en op de Arduino).
Volgens mij gebruikt de Keypad library de interne pullup van de Arduino. Dat is niet veel, dus bij lange draden zou er storing opgepikt kunnen worden. Meestal worden die externe 10k pullup weerstanden weggelaten.
Kun je een foto maken van hoe je het hebt aangesloten (op de keypad en op de Arduino).
Volgens mij gebruikt de Keypad library de interne pullup van de Arduino. Dat is niet veel, dus bij lange draden zou er storing opgepikt kunnen worden. Meestal worden die externe 10k pullup weerstanden weggelaten.
Advertisement
- Gij Kieken
- Berichten: 636
- Geregistreerd: 15 Nov 2015, 11:54
Re: Voorstellen en vraag m.b.t. Servos en keypad
Als je schets vroeger werkte naar behoren hoef je daar eigenlijk niets aan te veranderen.
Doe de moeite om met een multi tester beide keypads in kaart te brengen en te vergelijken.
Als je rij 0 en kolom 0 van je werkende keypad hebt dan sluit je dat draadje gewoon aan op rij 0 en kolom 0 van je ander keypad en zo analoog voor de rest van de aansluitingen.
Als je in de code lukraak begint te veranderen zonder echt te weten hoe de hardware in elkaar zit dan zie je vlug de bomen niet meer door het bos en wordt het wat Sudoku.
Doe de moeite om met een multi tester beide keypads in kaart te brengen en te vergelijken.
Als je rij 0 en kolom 0 van je werkende keypad hebt dan sluit je dat draadje gewoon aan op rij 0 en kolom 0 van je ander keypad en zo analoog voor de rest van de aansluitingen.
Als je in de code lukraak begint te veranderen zonder echt te weten hoe de hardware in elkaar zit dan zie je vlug de bomen niet meer door het bos en wordt het wat Sudoku.
Re: Voorstellen en vraag m.b.t. Servos en keypad
Koepel schreef:Hoe vind ik de sketch die hier bij hoort: https://bildr.org/2011/05/arduino-keypad/ ?
Kun je een foto maken van hoe je het hebt aangesloten (op de keypad en op de Arduino).
Volgens mij gebruikt de Keypad library de interne pullup van de Arduino. Dat is niet veel, dus bij lange draden zou er storing opgepikt kunnen worden. Meestal worden die externe 10k pullup weerstanden weggelaten.
de code heb ik hier weg: https://playground.arduino.cc/Code/Keypad/#Download
de foto als bijlage...
Re: Voorstellen en vraag m.b.t. Servos en keypad
Gij Kieken schreef:Als je schets vroeger werkte naar behoren hoef je daar eigenlijk niets aan te veranderen.
Doe de moeite om met een multi tester beide keypads in kaart te brengen en te vergelijken.
Als je rij 0 en kolom 0 van je werkende keypad hebt dan sluit je dat draadje gewoon aan op rij 0 en kolom 0 van je ander keypad en zo analoog voor de rest van de aansluitingen.
Als je in de code lukraak begint te veranderen zonder echt te weten hoe de hardware in elkaar zit dan zie je vlug de bomen niet meer door het bos en wordt het wat Sudoku.
ik heb even geen werkende multimeter ik zal dit binnenkort even proberen
Re: Voorstellen en vraag m.b.t. Servos en keypad
Op dit forum kunnen alleen kleine foto's Er is bijna niets te zien.
Links de pin nummers van het display
plain code
En dan dat vertalen naar rijen en kolommen.
Sorry, ik kan het niet zien. Volgens mij klopt er niets van de getallen hierboven. Ik kom op een andere volgorde uit dan die sketch in de link. Dit kan nog wel een tijdje zo doorgaan. Hoe ga je gestructureerd dit probleem oplossen ?
Links de pin nummers van het display
plain code
-
1 rood D6
2 groen D3
3 zwart D8
4 paars D2
5 rood D7
6 groen D5
7 zwart D4
-
En dan dat vertalen naar rijen en kolommen.
- Code: Alles selecteren
byte rowPins[ROWS] = {3, 4, 5, 2}; // connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 6, 7}; // connect to the column pinouts of the keypad
Sorry, ik kan het niet zien. Volgens mij klopt er niets van de getallen hierboven. Ik kom op een andere volgorde uit dan die sketch in de link. Dit kan nog wel een tijdje zo doorgaan. Hoe ga je gestructureerd dit probleem oplossen ?
- Gij Kieken
- Berichten: 636
- Geregistreerd: 15 Nov 2015, 11:54
Re: Voorstellen en vraag m.b.t. Servos en keypad
Als je geen multi rester hebt geen probleem.
Neem dan gewoon een batterijtje een Led en een serie weerstand (b.v. 1K).
Als je de draad eindjes tegen elkaar houd licht de Led op ( nu is het visueel in plaats van akoestisch).
Zorg ervoor dat de polariteit van de Led en die van de batterij kloppen!
Neem dan gewoon een batterijtje een Led en een serie weerstand (b.v. 1K).
Als je de draad eindjes tegen elkaar houd licht de Led op ( nu is het visueel in plaats van akoestisch).
Zorg ervoor dat de polariteit van de Led en die van de batterij kloppen!
Re: Voorstellen en vraag m.b.t. Servos en keypad
Hallo,
Door omstandigheden heb ik een tijdje niet met mijn project bezig kunnen zijn maar ik probeer het weer op te pakken.
Ik heb de servo's, de keypad én de LED's werkend. ik zou nu alleen ook nog graag losse drukknoppen toevoegen zodat ik de servo's niet alleen met de keypad kan aansturen maar ook per machine met een drukknop. Ik weet dat mijn code niet volgens de regels van de schoonheid is maar ik kan het met mijn beperkte kennis van de code nog een beetje volgen Ik zou de code voor de drukknoppen hier daarom nog graag aan toevoegen.
de vraag is dan hoe ik dit in mijn code zet, drukknop 1 zal dus hetzelfde stuk code moeten laten werken als het keypad bij keuze 1 doet.
hier nog even de code tot zo ver:
Door omstandigheden heb ik een tijdje niet met mijn project bezig kunnen zijn maar ik probeer het weer op te pakken.
Ik heb de servo's, de keypad én de LED's werkend. ik zou nu alleen ook nog graag losse drukknoppen toevoegen zodat ik de servo's niet alleen met de keypad kan aansturen maar ook per machine met een drukknop. Ik weet dat mijn code niet volgens de regels van de schoonheid is maar ik kan het met mijn beperkte kennis van de code nog een beetje volgen Ik zou de code voor de drukknoppen hier daarom nog graag aan toevoegen.
de vraag is dan hoe ik dit in mijn code zet, drukknop 1 zal dus hetzelfde stuk code moeten laten werken als het keypad bij keuze 1 doet.
hier nog even de code tot zo ver:
- Code: Alles selecteren
#include <Keypad.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Declareer de verschillende objecten voor de servo motoren
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
const int pinLed1 = 23;
const int pinLed2 = 25;
const int pinLed3 = 27;
const int pinLed4 = 29;
const int pinLed5 = 31;
const int pinLed6 = 33;
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
// Zet de pinnen voor de blauwe leds als uitgang.
pinMode( pinLed1, OUTPUT);
pinMode( pinLed2, OUTPUT);
pinMode( pinLed3, OUTPUT);
pinMode( pinLed4, OUTPUT);
pinMode( pinLed5, OUTPUT);
pinMode( pinLed6, OUTPUT);
lcd.init(); // initialiseer het LCD scherm
lcd.backlight(); // zet de backlight aan
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0);
lcd.print(" -AFZUIGING-");
lcd.setCursor(1, 1); // zet de cursor op positie 1, regel 1
lcd.print("MAAK JE KEUZE"); // schrijf op scherm
Serial.begin(9600);
// Ken een pin nummer toe aan de servo motoren
// De analoge ingangen zijn ook digitale uitgangen.
// Ze worden hier als digitale uitgangen gebruikt voor de servo motoren.
servo1.attach( A0);
servo2.attach( A1);
servo3.attach( A2);
servo4.attach( A3);
servo5.attach( A8);
servo6.attach( A9);
}
void loop(){
char key = keypad.getKey();
if( key == '1')
{
Serial.println( "Er is een 1 ingedrukt");
// Zet de overeenkomstige blauwe led aan, en de rest uit
digitalWrite( pinLed1, HIGH);
digitalWrite( pinLed2, LOW);
digitalWrite( pinLed3, LOW);
digitalWrite( pinLed4, LOW);
digitalWrite( pinLed5, LOW);
digitalWrite( pinLed6, LOW);
servo1.write( 0);
servo2.write( 90);
servo3.write( 90);
servo4.write( 90);
servo5.write( 90);
servo6.write( 90);
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0);
lcd.print(" - KEUZE 1 -");
lcd.setCursor(1, 1); // zet de cursor op positie 1, regel 1
lcd.print(" AFKORTZAAG"); // schrijf op scherm
}
if( key == '2')
{
Serial.println( "Er is een 2 ingedrukt");
// Zet de overeenkomstige blauwe led aan, en de rest uit
digitalWrite( pinLed1, LOW);
digitalWrite( pinLed2, HIGH);
digitalWrite( pinLed3, LOW);
digitalWrite( pinLed4, LOW);
digitalWrite( pinLed5, LOW);
digitalWrite( pinLed6, LOW);
servo1.write( 90);
servo2.write( 0);
servo3.write( 90);
servo4.write( 90);
servo5.write( 90);
servo6.write( 90);
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0);
lcd.print(" - KEUZE 2 -");
lcd.setCursor(1, 1); // zet de cursor op positie 1, regel 1
lcd.print(" FREESTAFEL "); // schrijf op scherm
}
if( key == '3')
{
Serial.println( "Er is een 3 ingedrukt");
// Zet de overeenkomstige blauwe led aan, en de rest uit
digitalWrite( pinLed1, LOW);
digitalWrite( pinLed2, LOW);
digitalWrite( pinLed3, HIGH);
digitalWrite( pinLed4, LOW);
digitalWrite( pinLed5, LOW);
digitalWrite( pinLed6, LOW);
servo1.write( 90);
servo2.write( 90);
servo3.write( 0);
servo4.write( 90);
servo5.write( 90);
servo6.write( 90);
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0);
lcd.print(" - KEUZE 3 -");
lcd.setCursor(1, 1); // zet de cursor op positie 1, regel 1
lcd.print("HANDGEREEDSCHAP"); // schrijf op scherm
}
if( key == '4')
{
Serial.println( "Er is een 4 ingedrukt");
// Zet de overeenkomstige blauwe led aan, en de rest uit
digitalWrite( pinLed1, LOW);
digitalWrite( pinLed2, LOW);
digitalWrite( pinLed3, LOW);
digitalWrite( pinLed4, HIGH);
digitalWrite( pinLed5, LOW);
digitalWrite( pinLed6, LOW);
servo1.write( 90);
servo2.write( 90);
servo3.write( 90);
servo4.write( 0);
servo5.write( 90);
servo6.write( 90);
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0);
lcd.print(" - KEUZE 4 -");
lcd.setCursor(1, 1); // zet de cursor op positie 1, regel 1
lcd.print(" CNC FREES "); // schrijf op scherm
}
if( key == '5')
{
Serial.println( "Er is een 5 ingedrukt");
// Zet de overeenkomstige blauwe led aan, en de rest uit
digitalWrite( pinLed1, LOW);
digitalWrite( pinLed2, LOW);
digitalWrite( pinLed3, LOW);
digitalWrite( pinLed4, LOW);
digitalWrite( pinLed5, HIGH);
digitalWrite( pinLed6, LOW);
servo1.write( 90);
servo2.write( 90);
servo3.write( 90);
servo4.write( 90);
servo5.write( 0);
servo6.write( 90);
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0);
lcd.print(" - KEUZE 5 -");
lcd.setCursor(1, 1); // zet de cursor op positie 1, regel 1
lcd.print("SCHUURMACHINE"); // schrijf op scherm
}
if( key == '6')
{
Serial.println( "Er is een 6 ingedrukt");
// Zet de overeenkomstige blauwe led aan, en de rest uit
digitalWrite( pinLed1, LOW);
digitalWrite( pinLed2, LOW);
digitalWrite( pinLed3, LOW);
digitalWrite( pinLed4, LOW);
digitalWrite( pinLed5, LOW);
digitalWrite( pinLed6, HIGH);
servo1.write( 90);
servo2.write( 90);
servo3.write( 90);
servo4.write( 90);
servo5.write( 90);
servo6.write( 0);
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0);
lcd.print(" - KEUZE 6 -");
lcd.setCursor(1, 1); // zet de cursor op positie 1, regel 1
lcd.print(" PLINTZUIGER "); // schrijf op scherm
}
if( key == '7' || key == '8' || key == '9' || key == '#' || key == '*'|| key == '0')
{
Serial.println( "Er is een 7 ingedrukt");
servo1.write( 90);
servo2.write( 90);
servo3.write( 90);
servo4.write( 90);
servo5.write( 90);
servo6.write( 90);
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0);
lcd.print(" - ONGELDIGE-");
lcd.setCursor(1, 1); // zet de cursor op positie 1, regel 1
lcd.print(" INVOER"); // schrijf op scherm
}
}
Re: Voorstellen en vraag m.b.t. Servos en keypad
je kunt toch zetten if (key ==1 || Digitalread(inputx)) dan actie 1 etc.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Voorstellen en vraag m.b.t. Servos en keypad
shooter schreef:je kunt toch zetten if (key ==1 || Digitalread(inputx)) dan actie 1 etc.
Ik ben nog steeds een absolute beginner met Arduino... dit volg ik dus nog niet helemaal (of eigenijk helemaal niet). Ik moet de drukknoppen toch toewijzen aan bepaalde poorten en dan met de code aangeven wat er moet gebeuren met welke knop?
Re: Voorstellen en vraag m.b.t. Servos en keypad
Ja, maar shooter ging er van uit dat je dat deel al onder de knie had.
Allereerst de hardware.
Een knop met één kant aan de GND vind ik veiliger. Dus de andere kant van de knop met een pullup van 4k7 naar de 5V en die kant van de knop ook naar een digitale ingang.
Dan wordt het signaal LOW als de knop is ingedrukt.
Definieer de pinnen van de knop: const int pinKnop1 = 10;
In setup(): pinMode( pinKnop1, INPUT);
In de loop(): if( digitalread( pinKnop1) == LOW) ...
Gecombineerd met je keypad: if( key == '1' || digitalRead( pinKnop1) == LOW) ...
Allereerst de hardware.
Een knop met één kant aan de GND vind ik veiliger. Dus de andere kant van de knop met een pullup van 4k7 naar de 5V en die kant van de knop ook naar een digitale ingang.
Dan wordt het signaal LOW als de knop is ingedrukt.
Definieer de pinnen van de knop: const int pinKnop1 = 10;
In setup(): pinMode( pinKnop1, INPUT);
In de loop(): if( digitalread( pinKnop1) == LOW) ...
Gecombineerd met je keypad: if( key == '1' || digitalRead( pinKnop1) == LOW) ...
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten