Zamolio bih poznavatelje programiranja Arduino aplikacije da pogledaju ovaj Sketch i upute me gdje griješim. Naime želio bih napraviti napravu kojom bih mogao raditi slijedeće. Kad se preko tastature unese neki broj, isti je vidljiv na LCD-u. Kad se pritisne tipka 1,stepper motor napravi koraka koliko je određeno naredbom myStepper.step Unesena vrijednost mora ostati spremljena u EEPROM. Trenutno nije bitno da se kontra smijer upravlja sa vrijednostima sa tastature. Kontra smijer se može postavit programski i uvijek je isti.
(imajte u vidu da sam ja skoro šezdesetgodišnjak i da mnoge stvari mi nisu baš sjele).
platforma je ARDUINO UNO V.3
// program za pokretanje step motora napred nazad
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Stepper.h> //including stepper motor library
#include <EEPROM.h>
int button1Pin = A0; // (u ovoj verziji koda koristi se analogni ulaz kao digitalni)
int button2Pin = A1; // (u ovoj verziji koda koristi se analogni ulaz kao digitalni)
int stepIN1Pin = 10; 
int stepIN2Pin = 13;
int stepIN3Pin = 12;
int stepIN4Pin = 11;
int stepsPerRevolution = 2060; // amount of steps per revolution
//char password[4];
char dist[4];
int j=0;
char customKey=0;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
 {'1', '2', '3', 'A'},
 {'4', '5', '6', 'B'},
 {'7', '8', '9', 'C'},
 {'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2); 
Stepper myStepper(stepsPerRevolution, stepIN2Pin, stepIN4Pin, stepIN3Pin, stepIN1Pin);
void setup(){
 pinMode(button1Pin, INPUT);
 pinMode(button2Pin, INPUT);
myStepper.setSpeed(15);
 lcd.backlight();
 lcd.init(); 
}
void loop(){
 char customKey = customKeypad.getKey();
 if (customKey){
//lcd.clear();
 lcd.setCursor(0,0);
 // lcd.print(customKey);
 for(int j=0;j<4;j++)
 EEPROM.write(j,customKey);
 for(int j=0;j<4;j++)
 dist[j]=EEPROM.read(j);
 //j=EEPROM.read(j);
 lcd.print( dist[j]);
 }
 { 
 int button1State, button2State;
 button1State = digitalRead(button1Pin);
 button2State = digitalRead(button2Pin);
// for(int j=0;j<4;j++)
 // dist[j]=EEPROM.read(j);
 // lcd.clear();
 // lcd.print( dist[j]);
 if (((button1State == LOW) && !(button2State == LOW))) // if we're pushing button 1 OR button 2
 myStepper.step(-stepsPerRevolution* dist[j]);  // ova naredba ne radi motor se uvijek vrti 10 revolucija bez obzira na vrijednost tastature
 // myStepper.step(stepsPerRevolution*2);     // ova naredba radi ali ne očitava vrijednost sa tastature
 if (((button2State == LOW) && !(button1State == LOW))) // if we're pushing button 1 OR button 2
 myStepper.step(-stepsPerRevolution/2);
 }
}
    
    
    