1i7 (1i7) wrote,
1i7
1i7

Categories:

Убить chipKIT за 60 секунд

(или как вариант - "Один сломал, второй потерял")

Сегодня утром помогал вести небольшую практическую лабу на автомобильном факультете по мотивам летней школы - оживить 2хмоторную машинку при помощи драйвера-усилителя L294D и платы chipKIT Uno32 в режиме Arduino.

Все просто - подключить провода к плате и моторам по схеме, дальше в нужной последовательности подавать нули и единицы на 4 ножки платы, чтобы крутить колеса в разные стороны.



Нарисовал на доске схему драйвера типа такой:




Студенты все подключили, покрутили для пробы одним мотором - нормально работает.

Дальше говорю - напишите самостоятельно программу типа, чтобы машинка ехала секунду вперед, потом секунду разворачивалась и ехала дальше и т.п. по кругу (разворот бортовым способом, т.е. крутить одновременно два мотора в разные стороны, т.е. опять же подавать нули и единицы в нужной комбинации).

Что-то написали, загрузили на плату - вроде не работает. Ну ерунда - включить-выключить моторчик с паузой - сейчас разберемся. Пока открывал код, кто-то заметил, что чип на плате разогрелся так, что обжигает палец. После отключения платы от 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);
}


Чем он принципиально отличается от примера с мигающей по бесконечному циклу лампочкой пока не врубился. Третью плату убивать не стали - только проверили, что бесконечная лампочка на одном пине чип так не греет.
Tags: arduino, microchip, mips, летняя школа
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments