Здравствуйте! Помогите разобраться отчего перегревается платформа Arduino Uno. Может я неправильно записал код или подключил не правильно. Идея заключена в этом. Я решил объединить автономною работу с управлением по Bluetooth. Когда я запускаю робота, нужно зайти в Bluetooth контроллер на смартфоне. Затем перейти в режим джостика и выбрать 1 из 2 кнопок. Режим управления или Автономный режим. Если выбираешь режим управления, то можно управлять роботом через Bluetooth (через кнопки "джостика"). Если выбираешь Автономный режим, то робот будет автоматически объезжать препятствия. Для создания робота понадобилось: Arduino uno(1 шт.). Motor Shield от Амперки(2 шт.). Ультразвуковой дальномер HC-SR04(1 шт.). Роботизированная платформа(1 шт.). Troyka Shield(1 шт.). Микросервопривод FS90(1 шт.). Bluetooth модуль HC-06(1 шт.). Батарейный отсек(1 шт). Дальномер HC-SR04 подключён к 8 и 9 пину. Модуль HC-06 к 0(RX) и 1(TX), 0 к TXD, 1 к RXD. Поможете определить почему Arduino перегревается. Код приведён ниже. Код (C++): #include <Ultrasonic.h> #include <Servo.h> #define SPEED_1 5 #define DIR_1 4 #define CON_MOTOR1 0 #define CON_MOTOR2 0 #define TRIGGER_PIN 8 #define ECHO_PIN 9 Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN); #define SPEED_2 6 #define DIR_2 7 #define FORWARD 0 #define BACKWARD 1 #define LEFT 2 #define RIGHT 3 Servo neck; int val; void go(int newDirection, int speed) { boolean motorDirection_1, motorDirection_2; switch ( newDirection ) { case FORWARD: motorDirection_1 = true; motorDirection_2 = true; break; case BACKWARD: motorDirection_1 = false; motorDirection_2 = false; break; case LEFT: motorDirection_1 = true; motorDirection_2 = false; break; case RIGHT: motorDirection_1 = false; motorDirection_2 = true; break; } analogWrite(SPEED_1, speed); analogWrite(SPEED_2, speed); digitalWrite(DIR_1, motorDirection_1); digitalWrite(DIR_2, motorDirection_2); } void setup() { for (int i = 4; i <= 7; i++) pinMode(i, OUTPUT); neck.attach(2); neck.write(90); Serial.begin(9600); } void loop() { if (Serial.available()) { val = Serial.read(); if (val == '1') { delay(50); float dist_cm = ultrasonic.Ranging(CM); delay(100); if (dist_cm < 35.0) { go(FORWARD, 0); neck.write(180); delay(500); float dist_cm_1 = ultrasonic.Ranging(CM); neck.write(0); delay(500); float dist_cm_2 = ultrasonic.Ranging(CM); if (dist_cm_1 > dist_cm_2) { neck.write(90); delay(200); go(LEFT, 100); delay(600); } else { neck.write(90); delay(200); go(RIGHT, 100); delay(600); } } else { go(FORWARD, 70); } } else if (val == '2') { if (Serial.available()) { val = Serial.read(); if (val == 'W') { go(FORWARD, 125); delay(200); } if (val == 'S') { go(BACKWARD, 125); delay(200); } if (val == 'A') { go(LEFT, 90); delay(200); } if (val == 'D') { go(RIGHT, 90); delay(200); } if (val == 'C') { go(FORWARD, 0); } if (val == 'H') { neck.write(90); } if (val == 'M') { neck.write(180); } } } } }
Я заметил что она перегревается давно. Arduino перестаёт нормально работать и если её потрогать можно почувствовать, что она становиться всё горячей и горячей(в прямом смычле).
На плате есть стабилизатор напряжения. Если питать плату большим напряжением - например 12 Вольт, стабилизатор сильно греется даже при небольшой нагрузке. Но это нормально. Если же греется чип микроконтроллера проверьте какой ток он раздает на отдельных пинах и суммарно.