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

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 44
Geregistreerd: 07 Dec 2019, 15:13

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

Berichtdoor jabjab » 01 Jul 2020, 07:20

Dank voor de verduidelijking! Ik zal het komende weekend kijken of ik dit voor elkaar kan krijgen. Nog een paar vragen:


Kan ik elke (D) aansluiting voor de drukknoppen gebruiken?


De Pullup waar je het over hebt; kan ik hier elke willekeurige drukknop met daarachter een 4K7 weerstand gebruiken? of is dit een speciaal onderdeel?

Advertisement

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

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

Berichtdoor Koepel » 01 Jul 2020, 08:21

Je kunt elke digitale pin gebruiken. Voor zover ik weet zijn alle analoge pinnen van de Arduino Mega 2560 ook digitale pinnen, dus die kun je ook gebruiken.

Alles staat online.
Bijvoorbeeld de uitleg van de functie digitalRead(): https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/.

Of deze uitleg: http://www.gammon.com.au/switches.
Sommigen vinden het gemakkelijker om één kant van de knop met 5V te verbinden, dan heb je een pulldown weerstand nodig.
Maar ik vind het veiliger om één kant van de knop met GND te verbinden en dan met een pullup resistor voor de andere kant van de knop.
Het gaat er om dat de digitale ingang niet los hangt.

Je kunt elke drukknop gebruiken.
Een industriële drukknop is duur. Adafruit heeft een selectie mooie drukknoppen, bijvoorbeeld met een ledje er in: https://www.adafruit.com/category/235.

Die 4k7 weerstand is een handige waarde, maar iets van ongeveer 220 Ω tot 10k kan ook.

Om dit soort dingen te proberen is het handig als je een Arduino Uno hebt liggen en een aparte sketch maakt om dit eerst eens te proberen. Het is beter om iets nieuws niet meteen in je uiteindelijke sketch te zetten (dat geldt voor beginners en gevorderden).

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

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

Berichtdoor jabjab » 01 Jul 2020, 11:40

dank je! ik heb weer wat huiswerk ;)

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

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

Berichtdoor jabjab » 28 Jul 2020, 12:25

Ik heb de code aangevuld en als ik de code verifieer dan geeft hij geen foutmeldingen. als ik de code echter naar de Arduino upload dan krijg ik allemaal fouten in het display en werkt de code niet meer. dit gebeurt al voordat ik ook maar een schakelaar heb aangesloten..


ik weet niet waar dit fout gaat, hopelijk zien jullie de fout?


hierbij de code:

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 int pinKnop1 = 22;
const int pinKnop2 = 24;
const int pinKnop3 = 26;
const int pinKnop4 = 28;
const int pinKnop5 = 30;
const int pinKnop6 = 32;




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

pinMode( pinKnop1, INPUT);
pinMode( pinKnop2, INPUT);
pinMode( pinKnop3, INPUT);
pinMode( pinKnop4, INPUT);
pinMode( pinKnop5, INPUT);
pinMode( pinKnop6, INPUT);

 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'|| digitalRead( pinKnop1) == LOW)
{
  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'|| digitalRead( pinKnop2) == LOW)
{
  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'|| digitalRead( pinKnop3) == LOW)
{
  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'|| digitalRead( pinKnop4) == LOW)
{
  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'|| digitalRead( pinKnop5) == LOW)
{
  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'|| digitalRead( pinKnop6) == LOW)
{
  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: 44
Geregistreerd: 07 Dec 2019, 15:13

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

Berichtdoor jabjab » 07 Mrt 2021, 17:46

Hallo,

Na een drukke periode (verhuizing) heb ik eindelijk weer wat tijd om met de hobby bezig te zijn. In mijn oude huis was ik al begonnen met het maken van automatische kleppen voor mijn stofafzuiging maar had de knoppen nog niet werkend. Mijn laatste vraag (28 juli 2020 :oops: ) is nog steeds actueel. Hebben jullie tips voor me? als ik de beschreven code upload dan gaat het helemaal mis dus daar doe ik iets niet goed.. wie kan me helpen?

Nog even voor de beeldvorming: https://youtu.be/T3_4lgkC1_c dit is het project.. ik wil dus de gates ook kunnen openen met een knop bij het betreffende gereedschap.

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

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

Berichtdoor shooter » 08 Mrt 2021, 14:51

wat zijn de problemen,
paul deelen
shooter@home.nl

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

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

Berichtdoor jabjab » 08 Mrt 2021, 15:30

shooter schreef:wat zijn de problemen,


als ik bovenstaande code inlaad dan krijg ik maar een half gevuld display en beginnen de servos te klepperen.

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

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

Berichtdoor shooter » 08 Mrt 2021, 20:52

je kunt maar 1 servo op de arduino aansluiten qua voeding de rest moet van een andere voeding komen bijv een stekkervoeding.
paul deelen
shooter@home.nl

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

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

Berichtdoor jabjab » 08 Mrt 2021, 21:18

ja, de servos hebben een eigen voeding dat is het probleem niet. Het werkt zoal ik wil met de keypad.

Ik wil alleen graag dat ik bij elk gereedschap (dus bij elke blast gate) een drukknop heb om de betreffende blast gate te kiezen. Ik heb hiervoor advies gevraagd hoe ik dit moet aansluiten en in de code verwerken. ik heb wat advies gekregen van Koepel en dat geprobeerd in de code te zetten (die heb ik hierboven geplaatst). maar als ik die code in de adruino upload dan krijg ik de genoemde klachten. Ik heb te weinig kennis van de code om te zien wat daar niet goed aan is (of wat ik verkeerd heb gedaan). daar zou ik graag wat hulp bij hebben

Berichten: 45
Geregistreerd: 08 Jan 2020, 17:23

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

Berichtdoor RonalT » 25 Dec 2021, 15:45

Ik zie dit hele verhaal nu pas, vandaar dat ik alsnog reageer.

Als je iets nieuws ga proberen is het handiger om dit in een nieuwe sketch te doen, zoals Koepel ook al schreef.

Koepel schreef:Om dit soort dingen te proberen is het handig als je een Arduino Uno hebt liggen en een aparte sketch maakt om dit eerst eens te proberen. Het is beter om iets nieuws niet meteen in je uiteindelijke sketch te zetten (dat geldt voor beginners en gevorderden).


Doordat je een en ander in een bestaande sketch ga invoegen kunnen er allerlei onoverzichtelijke fouten ontstaan.
En wat ik je verder mee wil geven is, bekijk de videoserie Bas On Tech eens. Hij geeft goede uitleg in het Nederlands en het zijn steeds kleine behapbare stukjes. Ik ben ook nog niet zo lang bezig met een Arduino, maar deze serie heeft me goed geholpen hoe een schakelaar of LED aangesloten kunnen worden op een Arduino.
Ik lees hier al een tijdje mee en zie dat veel mensen te veel in een keer willen. Ze hebben een idee en willen alle lampjes, schakelaars, vochtmeters en andere dingen in een keer implanteren.

Mijn idee is steeds geweest om elk onderdeel als klein stapje toe te voegen. Het eerste schakelaartje werkende krijgen (sketch_1), daarna de andere schakelaars en code toevoegen. Hoe een display werkt probeer je eerst uit door een sketch_2 te schrijven waarin je een stukje tekst laat zien op het scherm. Dan het display aan de sketch_1 toevoegen.
En zo steeds verder werken tot je een werkende sketch hebt. Ik zie programmeren zoals ze bij onderhandelen het over de 'Salamitactiek' hebben. Door een groot probleem in kleine deeltjes te hakken en die stuk voor stuk aanpakken.

Succes!

Vorige

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 17 gasten