Как аппаратно удалить скетч (прошивку) из Arduino?

sg6336
Offline
Зарегистрирован: 12.02.2015

На ардуине можно собрать мышку и клавиатуру, ПК будет их видеть, как родные. Проблема в том, что если задаю траекторию движения мышки и нажатие разных клавиш, то при маленькой задержке между операциями не успеваю залить новый скетч. Т.е. при подключении платы к ПК, мышка начинает бегать по экрану, а клавиатура нажимать клавиши. Работать с большими задержками не удобно. В случае если что пойдет не так, как аппаратно удалить прошивку с ардуины?

Пример кода (лучше не запускайте при маленьких задержках), в котором мышка перемещается по вершинам квадрата 100x100px, после чего нажимается клавиша «R»:

#include "Mouse.h"
#include "Keyboard.h"

int responseDelay = 15000;       // response delay of the mouse, in ms
int x,y;

void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
}

void loop() {
      x = 100; y = 0;
      m(x, y);
     
      x = 0; y = -100;
      m(x, y);
      
      x = -100; y = 0;
      m(x, y);
     
      x = 0; y = 100;
      m(x, y);

      //delay(responseDelay);
      Keyboard.print("R");
      //Mouse.click(MOUSE_RIGHT); 
      delay(responseDelay);
}

void m(int x, int y) {
      Mouse.move(x, y, 0);
      Serial.print(x);
      Serial.print("  ");
      Serial.println(y);
      delay(responseDelay);
}

использую Arduino Leonardo (кстати, на Arduino Due под Win8.1 x64 не работает).

Клапауций 322
Offline
Зарегистрирован: 31.12.2015
void setup() {}
void loop() {}

 

sg6336
Offline
Зарегистрирован: 12.02.2015

Как это залить в плату которая сразу же при подключении по USB к ПК перехватывает управление мышкой и клавиатурой?

std
Offline
Зарегистрирован: 05.01.2012

Может оказаться что никак. Тогда по ISP заново загрузчик писать.

А вообще, отводится некий вывод, D8 например. С ним самим ничего делать не нужно, а в setup() написать:

pinMode(8,INPUT_PULLUP);

а потом всё что в loop() поместить внутрь условия:

if(digitalRead(8)){
  // main code here
}

и о чудо, мышка нажимается, но если замкнуть D8 на землю, она узбагоится.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

void setup(){

delay ( 10000);

Serial.begin(9600);
Mouse.begin();
Keyboard.begin();

}

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

sg6336 пишет:

Как это залить в плату которая сразу же при подключении по USB к ПК перехватывает управление мышкой и клавиатурой?

зайди в Диспетчер устройств и отключи устройство

или кнопку ресет держи при втыкании

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

trembo пишет:

void setup(){

delay ( 100000000000000000000000000000000000000000000000000000000000000000000000000000);

Serial.begin(9600);
Mouse.begin();
Keyboard.begin();

}

sg6336
Offline
Зарегистрирован: 12.02.2015

std пишет:

Может оказаться что никак. Тогда по ISP заново загрузчик писать.

А вообще, отводится некий вывод, D8 например. С ним самим ничего делать не нужно, а в setup() написать:

pinMode(8,INPUT_PULLUP);

а потом всё что в loop() поместить внутрь условия:

if(digitalRead(8)){
  // main code here
}

и о чудо, мышка нажимается, но если замкнуть D8 на землю, она узбагоится.

Действенное и простое решение, как обезопасить себя в таких случаях, спасибо )

sg6336
Offline
Зарегистрирован: 12.02.2015

trembo пишет:

void setup(){

delay ( 10000);

Serial.begin(9600);
Mouse.begin();
Keyboard.begin();

}

Простое и эфективное решение, спасибо )

sg6336
Offline
Зарегистрирован: 12.02.2015

Как выглядит схема

Всем, спавибо. Собрал, все работает отлично. И мышка и клавиатура видятся. В будущем буду еще с SD картой разбираться.