rotary table
15 berichten
• Pagina 2 van 2 • 1, 2
Re: rotary table
bedankt voor alle hulp. Het is gelukt.
if .... else statement gebruikt en de negatieve hoek "angleR" positief gemaakt met abs()
if .... else statement gebruikt en de negatieve hoek "angleR" positief gemaakt met abs()
- Code: Alles selecteren
/*
LiquidCrystal 1602 + Rotary encoder incl.switch + steppermotor
*
* The circuit:
*/
// include the library LCD code:
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// input rotary encoder and switch
#define stepR 2 // interrupt 0 (=pin D2)
#define dirR 3 // CW / CCW
int switchR = 6; //switchR = switch
int switchState = 0;
int lastswitchState = 0;
int angleR = 0; //reading angle LCD1602
int x = 0;
int y = 0;
// steppermotor
const int dirMPin = 4; // direction Motor
const int stepMPin = 5; // 1600 steps 1 rev. motor = 8*200
int steps = 0; // 6400 steps 1 turn rotary-table (reduction 1 : 4)
void setup(){
lcd.begin(16, 2); // set up the LCD's number of columns 16 and rows 2
pinMode(stepR, INPUT); // encoder rotary step
pinMode(dirR, INPUT); // encoder rotary direction
attachInterrupt(0, read_rotary, FALLING); // interrupt 0 = pin D2
lcd.print("angle= "); // print hoek op regel 0
pinMode(stepMPin,OUTPUT); // step steppermotor
pinMode( dirMPin,OUTPUT); // direction steppermotor
pinMode( switchR,INPUT);
Serial.begin (9600);
}
void loop(){
lcd.setCursor(8,0); // column 8 row 0
lcd.print(angleR); // print getal op display kolom 7 op rij 0 kolom 1
lcd.print(" ");
delayMicroseconds(2000);{
switchState = digitalRead(switchR); // read pin D6, not pushed =low
if (switchState != lastswitchState){
if (switchState == LOW){ // switch pressed
steppermotor(); // to steppermotor
}
}
lastswitchState = switchState;
}
}
void read_rotary() {
if (digitalRead(dirR)) angleR--;// angle -1 degree on LCD1602
else angleR++; // angle +1 degree on LCD1602
}
void steppermotor(){
if (angleR >= 0 ){
(digitalWrite(dirMPin,LOW)); // LOW is CW rotation
steps=map(angleR,0,360,0,6400); //
for(int x = 0; x < steps; x++){ // make x steps = 6400 = 1 rev table
digitalWrite(stepMPin,HIGH); // make 1 step
delayMicroseconds(500);
digitalWrite(stepMPin,LOW);
delayMicroseconds(500);
}
}
else{
y=(abs(angleR));
digitalWrite(dirMPin,HIGH); // HIGH is CCW rotation
steps=map(y,0,360,0,6400); //
for (int x = 0; x < steps; x++){ // make "x" steps = 6400 = 1 rev table
digitalWrite(stepMPin,HIGH); // make 1 step
delayMicroseconds(500);
digitalWrite(stepMPin,LOW);
delayMicroseconds(500);
}
}
}
Advertisement
Re: rotary table
ik snap niet hoe angleR werkt, want die staat volgens mij op 0
paul deelen
shooter@home.nl
shooter@home.nl
Re: rotary table
cout >> /dev/null
(Maw, ik heb wat hier stond verwijderd)
(Maw, ik heb wat hier stond verwijderd)
Laatst gewijzigd door ctunes op 04 Feb 2022, 23:54, in totaal 1 keer gewijzigd.
Re: rotary table
http://www.mathertel.de/Arduino/RotaryE ... brary.aspx
Gebruik dit eens, en kijk of het werkt in jouw geval, bij mij loste het een hoop problemen op, zodat ik mijn aandacht van de encoderproblematiek naar de rest van de problemen kon verplaatsen.
(En bleek dat mijn manier van encoder uitlezen aan de grondslag lag van de problemen met het aansturen van de rest.)
Deze "library" is "rocksolid", en heel begrijpbaar.
Sterker nog, als je de source-code hebt bestudeerd, heeft geen enkele rotaryswitch nog geheimen voor je.
(Af en toe is het ook zo logisch allemaal, en daar doen we het voor.)
PS Is het niet mooi om duits-engels te lezen zonder google-translate ertussen?
Deze persoon doet de uiterste best om op te vallen op een rare manier.
Nu ja, net als ik eigenlijk.
Maar als iemand er ook maar wat aan kan hebben, wat maakt het dan uit hoe je opvalt?
Ik zie alleen zoveel mensen hier in dezelfde valkuilen vallen waar ik ook ben geweest.
Waarom is er geen java voor arduino?
Iedereen kan in Java programmeren namelijk, het is een soort van BASIC immers.)
"Omdat real-time systemen geen timeshare kennen."?
Neen!
Het is omdat in een arduino geen java interpreter zit.
Als dat zo was, dan zouden we allemaal in java schrijven, en wordt dit forum overbodig.
"Alleen nog nodig voor experts die de code willen hacken."
Als je goed naar je mobiele telefoon kijkt, dan zie je een BIOS met een java-core.
Gebruik dit eens, en kijk of het werkt in jouw geval, bij mij loste het een hoop problemen op, zodat ik mijn aandacht van de encoderproblematiek naar de rest van de problemen kon verplaatsen.
(En bleek dat mijn manier van encoder uitlezen aan de grondslag lag van de problemen met het aansturen van de rest.)
Deze "library" is "rocksolid", en heel begrijpbaar.
Sterker nog, als je de source-code hebt bestudeerd, heeft geen enkele rotaryswitch nog geheimen voor je.
(Af en toe is het ook zo logisch allemaal, en daar doen we het voor.)
PS Is het niet mooi om duits-engels te lezen zonder google-translate ertussen?
Deze persoon doet de uiterste best om op te vallen op een rare manier.
Nu ja, net als ik eigenlijk.
Maar als iemand er ook maar wat aan kan hebben, wat maakt het dan uit hoe je opvalt?
Ik zie alleen zoveel mensen hier in dezelfde valkuilen vallen waar ik ook ben geweest.
Waarom is er geen java voor arduino?
Iedereen kan in Java programmeren namelijk, het is een soort van BASIC immers.)
"Omdat real-time systemen geen timeshare kennen."?
Neen!
Het is omdat in een arduino geen java interpreter zit.
Als dat zo was, dan zouden we allemaal in java schrijven, en wordt dit forum overbodig.
"Alleen nog nodig voor experts die de code willen hacken."
Als je goed naar je mobiele telefoon kijkt, dan zie je een BIOS met een java-core.
Re: rotary table
In principe zou je daar alles mee mogen kunnen doen.
Hoe makkelijk is het niet om zeker te weten dat je code werkt, en je alleen aan het systeem hoeft te twijfelen?
https://arduinoforum.nl
Hoe makkelijk is het niet om zeker te weten dat je code werkt, en je alleen aan het systeem hoeft te twijfelen?
https://arduinoforum.nl
15 berichten
• Pagina 2 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten