Witam znajomy poprosił mnie o pomoc z programem na Arduino. Ja osobiście nigdy nie miałem do czynienia z arduino więc nie za bardzo kumam o co mu chodzi.
W związku z powyższym pomoże mi ktoś rozwiązać problem nieprawidłowo działającego kodu.
Kod, który napisał znajomy.
//Testy do programu spirala
//Compatible with the Arduino IDE 1.0
//[email protected]
#include <Wire.h> //biblioteka komunikacji I2C
int niski = 0; //zmienna niski
int wysoki = 0; //zmienna wysoki
long pm = 0; //długa zmienna o nazwie pm, przypisana wartść 0
byte silnik1 = 9;
byte silnik2 = 10;
byte koniec = 13;
byte start = 11;
byte kran = 12;
byte hall = 2;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); // określenie adresu konwertera I2C - 0x3F oraz typu wyświetlacza - 16 znaków w 2 linach
#include <Keypad.h>
const byte ROWS = 4; // ile wierszy
const byte COLS = 3; //ile kolumn
byte rowPins[ROWS] = {2, 3, 4, 5}; //piny wierszy
byte colPins[COLS] = {6, 7, 8}; //piny kolumn
char keys[ROWS][COLS] = { //mapowanie klawiatury
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
Keypad klawiatura = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //inicjalizacja klawiatury
void setup()
{
lcd.init(); // inicjalizacja LCD
lcd.backlight(); // podswietlenie
lcd.setCursor(1,0); //linia 0, pozycja 1
lcd.print("SPIRALA V2");
lcd.setCursor(0,1); //linia 1, pozycja 0
lcd.print("Test Arduino!");
delay(2000);
// lcd.init;
lcd.setCursor(0,0);
lcd.print("Wprowadz liczbe ");
lcd.setCursor(0,1);
lcd.print("*-TAK #-NIE ");
Serial.begin(9600);
pinMode(silnik1 , OUTPUT ); //deklaracja we-wy
pinMode(silnik2 , OUTPUT );
pinMode (koniec , OUTPUT);
pinMode (kran , INPUT_PULLUP);
pinMode (hall , INPUT);
digitalWrite (silnik1 , LOW);
digitalWrite (silnik2 , LOW);
digitalWrite (koniec , LOW);
}
void loop()
{
// int GetNumber()
int num = 0; //zmienna num ustaw na 0
char key = klawiatura.getKey(); //zmienna key, pobierz z klawiatury
while(key != '#') //dopoki key nie wyniesie #
{
switch (key) //wybor wartsci z klawiatury
{
case NO_KEY:
break;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9': //przyjmuje wartosci
Serial.print(key);
num = num * 10 +(key - '0'); // ustawienie liczb jako dwucyfrowe
break;
case '*':
num = 0;
break;
}
key = klawiatura.getKey();
}
}
char key = klawiatura.getKey(); //zmienna do przechowywania znaku (klawisz), odczyt z klawiatury
// if (digitalRead(key) == LOW and start == LOW){ //warunek spełniony jeżeli wartość jest większa od 0
// koniec = HIGH;
// delay(50);
// Serial.println(klawisz);
// lcd.setCursor(0,0);
// lcd.print(klawiatura);}
Ponad to przesyłam opis, który otrzymałem od znajomego.
Opis ogólny:
Ma to być półautomatyczna nawijarka.
Po włączeniu zasilania na wyświetlaczu LCD ma być napis "Podaj ile zwoi", w drugiej linii "TAK-* NIE #". Po wpisaniu liczby zwoi akceptacja za pomocą *, lub w czasie pomyłki #, lub zmiana ilości zwoi # liczba *.
Stół musi być w pozycji góra, czyli zwarta krańcówka A0.
Naciśnięcie pedału START spowoduje uruchomienie silnika 2 - ruch stolika w dół i do góry do krańcówki A0 (ruch silnika w jedną stronę, gdyż ten mechanizm co mam jest mimośrodowy), następnie załącza silnik 1 i od wartości zadanej na wyświetlaczu odejmuje wartość zliczonych impulsów z czujnika Halla znajdującego się na zębatce przekładni silnika 1.
Gdy wynik odejmowania jest 0 następuje STOP, a na wyświetlaczu wyświetla się ostatnio wprowadzona wartość. Koniec.
Naciśnięcie pedału START spowoduje uruchomienie silnika 2 - ruch stolika w dół i do góry do krańcówki A0 (ruch silnika w jedną stronę, gdyż ten mechanizm co mam jest mimośrodowy), następnie załącza silnik 1 i od wartości zadanej na wyświetlaczu odejmuje wartość zliczonych impulsów z czujnika Halla znajdującego się na zębatce przekładni silnika 1.
Gdy wynik odejmowania jest 0 następuje STOP, a na wyświetlaczu wyświetla się ostatnio wprowadzona wartość. Koniec.
I tak w kóło.Uwagi!!!
Krańcówka A0 ma charakterystykę zwłoczną.
Podświetlenie może się świecić cały czas lub nie.
Srodowisko ARDUINO, uruchomiłem wyświetlacz pod I2C, działa klawiatura, ale z resztą mam problem. Model czynnymam, którym można się bawić.
Za pomoc z góry dzięki.