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

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 41
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: 2520
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: 41
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: 41
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

}



  }

Vorige

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast