Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #define SPEED 800
- const int dir = 8, step = 9, ms1 = 10, ms2 = 11, ms3 = 12;
- const int SetBotton = 13, IncBotton = 14, DecBotton = 15;
- const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
- float position = 0, minMove = 45;
- LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
- void setup() {
- // put your setup code here, to run once:
- pinMode(SetBotton, INPUT);
- pinMode(IncBotton, INPUT);
- pinMode(DecBotton, INPUT);
- pinMode(dir, OUTPUT);
- pinMode(step, OUTPUT);
- pinMode(ms1, OUTPUT);
- pinMode(ms2, OUTPUT);
- pinMode(ms3, OUTPUT);
- digitalWrite(ms1, LOW);
- digitalWrite(ms2, HIGH);
- digitalWrite(ms3, LOW);
- lcd.begin(16, 2);
- lcd.print("PROTORAPID ");
- lcd.setCursor(0, 2);
- lcd.print("Modulo 1801 ");
- delay(2000);
- lcd.clear();
- lcd.print("POSIZIONE: ");
- lcd.setCursor(0, 2);
- lcd.print(position, 2);
- lcd.setCursor(11, 2);
- lcd.print("gradi");
- }
- void loop() {
- // put your main code here, to run repeatedly:
- if(digitalRead(IncBotton) == HIGH) {
- delay(150);
- stepperMove(dir, step, int(minMove / 0.45), 1);
- if(position != 360 && position + minMove <= 360) {
- position += minMove;
- }
- else if(position + minMove > 360) {
- position = abs(360 - (position + minMove));
- }
- else{
- position = 0;
- position += minMove;
- }
- lcd.setCursor(0, 2);
- lcd.print(" gradi");
- lcd.setCursor(0, 2);
- lcd.print(position, 2);
- }
- else if(digitalRead(SetBotton) == HIGH) {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(" Menu ");
- delay(1000);
- lcd.clear();
- lcd.print("SPOSTAMENTO MIN:");
- lcd.setCursor(0, 2);
- lcd.print(minMove, 2);
- lcd.setCursor(11, 2);
- lcd.print("gradi");
- while(1) {
- if(digitalRead(IncBotton) == HIGH) {
- delay(150);
- minMove += 0.45;
- lcd.setCursor(0, 2);
- lcd.print(" gradi");
- lcd.setCursor(0, 2);
- lcd.print(minMove, 2);
- }
- else if(digitalRead(SetBotton) == HIGH) {
- delay(300);
- break;
- }
- else if(digitalRead(DecBotton) == HIGH) {
- delay(150);
- if(minMove - 0.45 >= 0.45) {
- minMove -= 0.45;
- }
- lcd.setCursor(0, 2);
- lcd.print(" gradi");
- lcd.setCursor(0, 2);
- lcd.print(minMove, 2);
- }
- }
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("POSIZIONE: ");
- lcd.setCursor(0, 2);
- lcd.print(position, 2);
- lcd.setCursor(11, 2);
- lcd.print("gradi");
- }
- else if(digitalRead(DecBotton) == HIGH) {
- delay(150);
- stepperMove(dir, step, int(minMove / 0.45), 0);
- if(position != 0 && position - minMove >= 0) {
- position -= minMove;
- }
- else if(position - minMove < 0) {
- position = 360 + (position - minMove);
- }
- else{
- position = 360;
- position -= minMove;
- }
- lcd.setCursor(0, 2);
- lcd.print(" gradi");
- lcd.setCursor(0, 2);
- lcd.print(position, 2);
- }
- }
- void stepperMove(byte dirPin, byte stepPin, unsigned int step, bool direction) {
- if(direction == 0) {
- digitalWrite(dirPin, HIGH);
- }else{
- digitalWrite(dirPin, LOW);
- }
- for(int counter = 0; counter != step; counter++) {
- digitalWrite(stepPin, HIGH);
- delayMicroseconds(SPEED);
- digitalWrite(stepPin, LOW);
- delayMicroseconds(SPEED);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement