Arduino Mega 2560 вырубается без причины.
- Войдите на сайт для отправки комментариев
Пнд, 07/06/2021 - 17:58
Доброго времени суток!
У меня необычная проблема... я на ардуинке сделал ЧПУ с i2c экраном. Но после нескольких повторов программы у меня просто или на экран выводиться кряказябра, ардуинка перезагружаеться, или просто перестаёт работать. Когда отключить экран и загрузить простенькую програмку всё ок. Или мозги не могут код выполнить... или я не знаю... Всё спаяно красиво и работает. К ардуинке подключены Реле.
Очень нужна ваша помощь!
Заранее спасибо.
реле на отдельном питании? или все вместе с МК питается?
посадить на отдельный БП + опторазвязки с реле.
ЧПУ с экраном, а подключено только реле. Фантастика.
Desinger - надо схему и код. иначе досвиданья. решайте проблему сами
Реле на отдельном БП и на октопаре. Код сейчас дам.
//including libs #include <Wire.h> //defining pins #define PISTON1 51 #define PISTON2 52 #define ZASHYM 53 #define SENSOR_DOWN 50 #define SENSOR_UP 43 #define SENSOR_FORWARD 49 #define SENSOR_BACKWARD 48 #define PUSK_STOP 46 #define STOP_ALL 47 #define VIBRATY 45 #define PERELIK 44 //setting booleans boolean zUp = false; boolean puskWasUp = true; boolean vibratyWasUp = true; boolean perelikWasUp = true; boolean sensorLoop = true; String choosen; String scrolled = "defaultCMD"; int scrll; void setup() { //init lcd //selscting pinMode for all pins pinMode(PISTON1, OUTPUT); pinMode(PISTON2, OUTPUT); pinMode(ZASHYM, OUTPUT); pinMode(PUSK_STOP, INPUT_PULLUP); pinMode(STOP_ALL, INPUT_PULLUP); pinMode(VIBRATY, INPUT_PULLUP); pinMode(PERELIK, INPUT_PULLUP); pinMode(SENSOR_DOWN, INPUT_PULLUP); pinMode(SENSOR_UP, INPUT_PULLUP); pinMode(SENSOR_FORWARD, INPUT_PULLUP); pinMode(SENSOR_BACKWARD, INPUT_PULLUP); } int defaultCMD(int piston, int sensor1, int sensor2){ digitalWrite(piston, true); digitalWrite(ZASHYM, true); delay(500); //Cheking for DownSensor do { boolean sensor = digitalRead(sensor1); if(sensor){ delay(10); sensor = digitalRead(sensor1); if(sensor){ digitalWrite(piston,false); break; } } boolean puskIsUp = digitalRead(PUSK_STOP); if(puskWasUp && !puskIsUp){ delay(10); puskIsUp = digitalRead(PUSK_STOP); if(!puskIsUp){ digitalWrite(piston,false); digitalWrite(ZASHYM, false); break; } } puskWasUp = puskIsUp; } while(sensorLoop); //Cheking for UpSensor do { boolean sensorUp = digitalRead(sensor2); if(sensorUp){ delay(10); sensorUp = digitalRead(sensor2); if(sensorUp){ digitalWrite(ZASHYM, false); break; } } boolean puskIsUp = digitalRead(PUSK_STOP); if(puskWasUp && !puskIsUp){ delay(10); puskIsUp = digitalRead(PUSK_STOP); if(!puskIsUp){ digitalWrite(ZASHYM, false); break; } } puskWasUp = puskIsUp; } while(sensorLoop); } int thirdCMD( int piston){ digitalWrite(piston,true); delay(500); do { boolean puskIsUp = digitalRead(PUSK_STOP); if(puskWasUp && !puskIsUp){ delay(10); puskIsUp = digitalRead(PUSK_STOP); if(!puskIsUp){ digitalWrite(piston,false); break; } } puskWasUp = puskIsUp; } while(sensorLoop); } int fifthCMD(int piston, int sensor2){ digitalWrite(piston, true); digitalWrite(ZASHYM, true); delay(500); //Cheking for DownSensor do { boolean sensor = digitalRead(sensor2); if(sensor){ delay(10); sensor = digitalRead(sensor2); if(sensor){ digitalWrite(PISTON1,false); break; } } boolean puskIsUp = digitalRead(PUSK_STOP); if(puskWasUp && !puskIsUp){ delay(10); puskIsUp = digitalRead(PUSK_STOP); if(!puskIsUp){ digitalWrite(piston,false); break; } } puskWasUp = puskIsUp; } while(sensorLoop); } void loop() { boolean perelikIsUp = digitalRead(PERELIK); boolean vibratyIsUp = digitalRead(VIBRATY); boolean puskIsUp = digitalRead(PUSK_STOP); if(perelikWasUp && !perelikIsUp){ delay(10); perelikIsUp = digitalRead(PERELIK); if(!perelikIsUp){ if(scrolled == "secondCMD"){ scrolled = "thirdCMD"; } else if(scrolled == "thirdCMD"){ scrolled = "fourthCMD"; } else if(scrolled == "fourthCMD"){ scrolled = "fifthCMD"; } else if(scrolled == "fifthCMD"){ scrolled = "sixthCMD"; } else if(scrolled == "sixthCMD"){ scrolled = "defaultCMD"; } else if(scrolled == "defaultCMD"){ scrolled = "secondCMD"; } } } if(vibratyWasUp && !vibratyIsUp){ delay(10); vibratyIsUp = digitalRead(VIBRATY); if(!vibratyIsUp){ if(scrolled == "thirdCMD"){ choosen = "secondCMD"; } else if(scrolled == "fourthCMD"){ choosen = "thirdCMD"; } else if(scrolled == "fifthCMD"){ choosen = "fourthCMD"; } else if(scrolled == "sixthCMD"){ choosen = "fifthCMD"; } else if(scrolled == "defaultCMD"){ choosen = "sixthCMD"; } else if(scrolled == "secondCMD"){ choosen = "defaultCMD"; } } } if(puskWasUp && !puskIsUp){ delay(10); puskIsUp = digitalRead(PUSK_STOP); if(!puskIsUp){ if(choosen == "secondCMD"){ defaultCMD(52,49,48); } else if(choosen == "thirdCMD"){ thirdCMD(51); } else if(choosen == "fourthCMD"){ thirdCMD(52); } else if(choosen == "fifthCMD"){ fifthCMD(51,50); } else if(choosen == "sixthCMD"){ fifthCMD(52,49); } else if(choosen == "defaultCMD"){ defaultCMD(51,50,43); } } } perelikWasUp = perelikIsUp; vibratyWasUp = vibratyIsUp; puskWasUp = puskIsUp; }Где тут Экран?
Я его отключил в коде. Потому что думал что это изза него.
А схему? Вам же сказали
надо схему и код. иначе досвиданья. решайте проблему сами
Пробежал бегло, но мне почему то кажется, что это не ЧПУ...
Я правильно понял, вот это вот управляет станком с числовым программным управлением?
И таки да. Надо схему.