#include <LiquidCrystal.h>
#include <AccelStepper.h>
#include <Wire.h>
#define ANALOG_IN0 A0
#define ANALOG_IN1 A1
#define ANALOG_IN2 A2
#define ANALOG_IN3 A3
LiquidCrystal lcd(34, 36, 38, 40, 42, 44, 46, 48, 50, 52);
AccelStepper
Stepper0(1, 13, 12); //Stepper 1
AccelStepper
Stepper1(1, 7, 6); //Stepper 2
AccelStepper
Stepper2(1, 10, 9); //Stepper 3
AccelStepper
Stepper3(1, 4, 3); //Stepper 4
const int inputPin_0 = 53; // Input Pin 43 Menü Teachen-Modus
const int inputPin_1 = 51; // Input Pin 45 Menü Automatik-Modus
const int inputPin_2 = 49; // Input Pin 47 Menü Justage-Modus
volatile int state=0; // Variablen, die von Interruptroutinen angefasst werden, sollten "volatile" deklariert werden
volatile unsigned long lastTime=0; // Zeitpunkt der letzten steigenden Flanke, nötig zum Entprellen
const int x = 0;
const int y = 0;
const int z = 0;
const int Wahl= 0;
const int Speed= 0;
const int Delay= 0;
const int Tool= 0;
const int Pos = 1;
void setup()
{
Wire.begin();
Stepper0.setMaxSpeed(10000);
Stepper0.setAcceleration(10000);
Stepper1.setMaxSpeed(10000);
Stepper1.setAcceleration(10000);
Stepper2.setMaxSpeed(10000);
Stepper2.setAcceleration(10000);
Stepper3.setMaxSpeed(10000);
Stepper3.setAcceleration(10000);
pinMode(inputPin_0, INPUT); // Input Deklaration
pinMode(inputPin_1, INPUT); // Input Deklaration
pinMode(inputPin_2, INPUT); // Input Deklaration
attachInterrupt(49, KeyPressed_1, RISING); // 43 ist der Interrupt , bei jeder steigenden Flanke wird keyPressed_0() aufgerufen
attachInterrupt(51, KeyPressed_2, RISING); // 45 ist der Interrupt , bei jeder steigenden Flanke wird keyPressed_1() aufgerufen
attachInterrupt(53, KeyPressed_3, RISING); // 47 ist der Interrupt , bei jeder steigenden Flanke wird keyPressed_2() aufgerufen
lcd.begin(16,4); // 1 ist der Interrupt für Pin 2, bei jeder steigenden Flanke wird keyPressed_1() aufgerufen
}
//.........................Interruput Auswertung mit entprellen........................................ .......................//
void KeyPressed_1(){ // state =0 , falls mindestens 100ms seit der letzten Flanke vergangen sind
unsigned long now = millis();
if (now - lastTime > 100){ // entprellen
state=1 ;
}
lastTime=now;
}
void KeyPressed_2(){ // state =1 , falls mindestens 100ms seit der letzten Flanke vergangen sind
unsigned long now = millis();
if (now - lastTime > 100){ // entprellen
state=2 ;
}
lastTime=now;
}
void KeyPressed_3(){ // state = 2 , falls mindestens 100ms seit der letzten Flanke vergangen sind
unsigned long now = millis();
if (now - lastTime > 100){ // entprellen
state=3 ;
}
lastTime=now;
}
//..................................MENÜ............ .................................................. ......................//
void loop()
{
switch(state)
{
case 0:
{ lcd.clear();
lcd.setCursor(0,0) ;
lcd.print(">>>>>>>Robotik<<<<<<") ;
lcd.setCursor(0,1) ;
lcd.print("Projektarbeit2014 by") ;
lcd.setCursor(0,2) ;
lcd.print("Kevin Krause") ;
lcd.setCursor(0,3) ;
lcd.print("Dominik Loher") ;
delay(10000);
state=1;
}
case 1: Teachen_menue();
Joystick();
break;
case 2: Automatik();
break;
case 3: Justage();
break;
}
}
Lesezeichen