Hello to all,
First off all i am using Arduino Due.
I have 2 way position selector switch pins are connected to 2 and 3. And i have 5 push buttons which connects 4, 5, 6, 7, 8 pins.
In my algorithm, i need to make manual and automatic mode switch for my position selector.
I use 3.3v for buttons and I have 10k resistor with grounded for all of the buttons.
I checked, no circiut mistake.
It works normally for 5 minutes. Everything is fine.
After several times i can't select position. It always be on auto mode. I cant switch to manual mode.
How can i fix this? Is there coding error?
Thank you!
Here is my code.
const int modPinOto = 2; // otomatik mod pini
const int modPinMan = 3 ; // manuel mod pini
const int modPinOtoBaslat = 4 ; // otomatik modda baslatma pini
const int modPinManIleri = 5; // motor ileri pini
const int modPinManGeri = 6 ; // motor geri pini
const int modPinManDolum = 7; // dolum pini
const int modPinManHome = 8 ; // home pini
const int Dolum = 10 ; // dolum role pini
const int ledPin = 13; // led pini
int modDurumOto = 0;
int modDurumOtoBaslat = 0;
int modDurumMan = 0;
int modDurumManIleri = 0;
int modDurumManGeri = 0;
int modDurumManDolum = 0;
int modDurumManHome = 0;
void setup() {
pinMode(ledPin, OUTPUT); // led pinini cikis olarak ayarla
pinMode(Dolum, OUTPUT); // dolum role pinini cikis olarak ayarla
pinMode(modPinOto, INPUT); // modPinOto pinini giris olarak ayarla
pinMode(modPinOtoBaslat, INPUT); // modPinOtoBaslat pinini giris olarak ayarla
pinMode(modPinMan, INPUT); // modPinMan pinini giris olarak ayarla
pinMode(modPinManIleri, INPUT); // modPinManIleri pinini giris olarak ayarla
pinMode(modPinManGeri, INPUT); // modPinManGeri pinini giris olarak ayarla
pinMode(modPinManDolum, INPUT); // modPinManDolum pinini giris olarak ayarla
pinMode(modPinManHome, INPUT); // modPinManHome pinini giris olarak ayarla
Serial.begin(9600);
}
void loop(){
modDurumOto = digitalRead(modPinOto); // Oto buton durumunu oku
modDurumMan = digitalRead(modPinMan); // Man buton durumunu oku
if (modDurumOto == HIGH)
{
modDurumOtoBaslat = digitalRead(modPinOtoBaslat); // OtoBaslat buton durumunu oku
if (modDurumOtoBaslat == HIGH )
{
OtoBaslatFonksiyonu(); // otobaslat fonksiyonunu calistiriyoruz
}
else
{
Serial.println("Otomatik Mod / Automatic Mode");
digitalWrite(ledPin, HIGH);
Serial.println("Led");
delay(100);
digitalWrite(ledPin, LOW);
Serial.println("Led");
delay(100);
}
}
else if (modDurumMan == HIGH)
{
modDurumManIleri = digitalRead(modPinManIleri); // ManIleri buton durumunu oku
modDurumManGeri = digitalRead(modPinManGeri); // ManGeri buton durumunu oku
modDurumManDolum = digitalRead(modPinManDolum); // ManDolum buton durumunu oku
modDurumManHome = digitalRead(modPinManHome); // ManHome buton durumunu oku
if (modDurumManIleri == HIGH ) // ileri butonunu kontrol ediyoruz.
{
IleriFonksiyonu(); // ileri fonksiyonunu calistiriyoruz
}
else if (modDurumManGeri == HIGH ) // geri butonunu kontrol ediyoruz.
{
GeriFonksiyonu(); // ger fonksiyonunu calistiriyoruz
}
else if (modDurumManDolum == HIGH ) // dolum butonunu kontrol ediyoruz.
{
DolumFonksiyonu(); // dolum fonksiyonunu calistiriyoruz
}
else if (modDurumManHome == HIGH ) // home butonunu kontrol ediyoruz.
{
HomeFonksiyonu(); // home fonksiyonunu calistiriyoruz
}
else
{
Serial.println("Manuel Mod / Manual Mode");
digitalWrite(ledPin, HIGH);
Serial.println("Led");
delay(100);
digitalWrite(ledPin, LOW);
Serial.println("Led");
delay(100);
}
}
else
{
Serial.println("Pozisyon seciniz / Select Position");
}
} //loop kapatma
void DolumFonksiyonu(){
Serial.println("Dolum Butonu / Fill Button");
delay(2000);
}
void HomeFonksiyonu(){
Serial.println("Home Fonksiyonu / Home Button");
delay(2000);
}
void IleriFonksiyonu(){
Serial.println("Ileri Fonksiyonu / Forward Button");
delay(2000);
}
void GeriFonksiyonu(){
Serial.println("Geri Fonksiyonu / Backward Button");
delay(2000);
}
void OtoBaslatFonksiyonu(){
Serial.println("Oto Baslat Fonksiyonu / Auto Start Button");
delay(2000);
}