Voorstellen en vraag m.b.t. Servos en keypad

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 2650
Geregistreerd: 06 Aug 2016, 01:03

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor Koepel » 04 Jan 2020, 23:07

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.

Advertisement

Gebruikers-avatar
Berichten: 467
Geregistreerd: 15 Nov 2015, 11:54

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor Gij Kieken » 04 Jan 2020, 23:22

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.

Berichten: 41
Geregistreerd: 07 Dec 2019, 15:13

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor jabjab » 05 Jan 2020, 12:23

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...
keyy.JPG
keyy.JPG (139.87 KiB) 1967 keer bekeken

Berichten: 41
Geregistreerd: 07 Dec 2019, 15:13

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor jabjab » 05 Jan 2020, 12:25

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 :oops: ik zal dit binnenkort even proberen

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

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor Koepel » 05 Jan 2020, 14:06

Op dit forum kunnen alleen kleine foto's :( Er is bijna niets te zien.

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 ?

Gebruikers-avatar
Berichten: 467
Geregistreerd: 15 Nov 2015, 11:54

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor Gij Kieken » 05 Jan 2020, 14:30

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!

Berichten: 41
Geregistreerd: 07 Dec 2019, 15:13

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor jabjab » 30 Jun 2020, 19:20

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:




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

}



  }

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

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor shooter » 30 Jun 2020, 20:32

je kunt toch zetten if (key ==1 || Digitalread(inputx)) dan actie 1 etc.
paul deelen
shooter@home.nl

Berichten: 41
Geregistreerd: 07 Dec 2019, 15:13

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor jabjab » 30 Jun 2020, 22:02

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 :oops: (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?

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

Re: Voorstellen en vraag m.b.t. Servos en keypad

Berichtdoor Koepel » 30 Jun 2020, 23:20

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) ...

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten