(или как вариант - "Один сломал, второй потерял")
Сегодня утром помогал вести небольшую практическую лабу на автомобильном факультете по мотивам
летней школы - оживить 2хмоторную машинку при помощи
драйвера-усилителя L294D и платы chipKIT Uno32 в режиме Arduino.
Все просто - подключить провода к плате и моторам по схеме, дальше в нужной последовательности подавать нули и единицы на 4 ножки платы, чтобы крутить колеса в разные стороны.
![](http://img-fotki.yandex.ru/get/6602/161653612.f/0_8c93f_d3fa7b7_XL)
Нарисовал на доске схему драйвера типа такой:
![](http://myrobot.ru/wiki/uploads/Components/l293d_powering_1.png)
Студенты все подключили, покрутили для пробы одним мотором - нормально работает.
Дальше говорю - напишите самостоятельно программу типа, чтобы машинка ехала секунду вперед, потом секунду разворачивалась и ехала дальше и т.п. по кругу (разворот бортовым способом, т.е. крутить одновременно два мотора в разные стороны, т.е. опять же подавать нули и единицы в нужной комбинации).
Что-то написали, загрузили на плату - вроде не работает. Ну ерунда - включить-выключить моторчик с паузой - сейчас разберемся. Пока открывал код, кто-то заметил, что чип на плате разогрелся так, что обжигает палец. После отключения платы от USB быстро остывает, но при включении опять разогревается за 5 секунд. Новая версия прошивки из MPIDE больше не заливается - среда что-то пытается делать, но ждать, что произойдет быстрее - среда зальет прошивку или чип расплавит плату, - не очень хочется. Для чистоты эксперимента взяли вторую плату, провода (к моторам, драйверу и т.п) подключать вообще не стали - просто залили прошивку как есть через USB - та же история - чип греется за 5 секунд, новая прошивка не заливается.
Вот собственно весь код:
void setup() {
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
delay(1000);
digitalWrite(7, LOW);
delay(1000);
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
digitalWrite(9, LOW);
delay(1000);
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(8, HIGH);
delay(3000);
digitalWrite(8, LOW);
delay(3000);
digitalWrite(9, LOW);
delay(3000);
digitalWrite(9, HIGH);
delay(3000);
digitalWrite(6, LOW);
delay(3000);
digitalWrite(6, HIGH);
delay(3000);
digitalWrite(7, HIGH);
delay(3000);
digitalWrite(7, LOW);
delay(3000);
}
Чем он принципиально отличается от примера с мигающей по бесконечному циклу лампочкой пока не врубился. Третью плату убивать не стали - только проверили, что бесконечная лампочка на одном пине чип так не греет.