Подскажите новичку ,как лучше запрограммировать и как перепрограммировать Ардуино.

deniska2
Offline
Зарегистрирован: 18.08.2014

Предыстория небольшая.Понадобился ИК приёмник для ПК (управлять оболочкой XBMC).Нашел на форуме в интернете проект на Ардуино Микро.Заказал платки.Сейчас проект скомпилировал в Ардуино 1.0.5.Нажал кнопочку Загрузить.

Если я правильно,то прошивка сразу ушла в Ардуинку и я её на запорол.И как я понял,для того чтобы залить прошивку в ардуинку.не обязательно бегать искать программатор отдельный или использовать ArduinoUploader для загрузки hex из Тemp .Ардуино IDE сама всё прекрасно прошивает.

А теперь собственно вопросы:

1.Если прошивать напрямую Ардруино IDE,то как потом проверить залилась ли прошивка .Как её считать обратно.

2.Есть ли программы,которые позволяют не только заливать в Ардуинку готовые прошивки.но и скачивать их обратно.

Вот сам код :

// ===============================================
// Управление компьютером с помощью Arduino Micro и ИК-пульта
// IR2USB v 0.2
// (c) Nomad
// ===============================================

#include <IRremote.h>

// ===============================================
// пин, на который подключен ИК-датчик
#define ir_dataPin A3

// пин, на который подключен управляющий контакт
// реле включения ПК. Рабочие контакты реле должны
// идти на кнопку <POWER> компьютера.
#define powerPin 10

#define hold_cycles 17000

// ===============================================
unsigned int nTurn;
unsigned long nPressedButton;

IRrecv irrecv( ir_dataPin );

void setup()
  {
  nTurn = 0;
  nPressedButton = 0;

  irrecv.enableIRIn();

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

void ReleaseKey()
  {
  nTurn = 0;
  nPressedButton = 0;
  Keyboard.releaseAll();
  }

decode_results ir_data;
void loop()
  {
  byte cNewKey = 0;
  if( irrecv.decode( &ir_data ))
    {
    if( ir_data.decode_type == 3 ) ir_data.value |= 0x800;
    else if( ir_data.decode_type == 4 ) ir_data.value |= 0x8000;
    
    Serial.print( "   type = " );
    Serial.print( ir_data.decode_type, DEC );
    Serial.print( "   code = " );
    Serial.print( ir_data.value, HEX );
    Serial.print( "   bits = " );
    Serial.println( ir_data.bits, DEC );

    if( ir_data.value == nPressedButton ) ir_data.value = REPEAT;

    // Трансляция кодов кнопок пульта в клавиши клавиатуры
    switch( ir_data.value )
      {
      case 0x111:                 // Реле включения/выключения компьютера
        digitalWrite( powerPin, HIGH );
		delay( 100 );
        digitalWrite( powerPin, LOW );
        break;
      case 0x816:                 // Включение ТВ - F1 (10011)
        cNewKey = KEY_F1;
        break;
      case 0x80C:                 // Выключение ТВ - F2
        cNewKey = KEY_F2;
        break;
      case 0x80A:                 // Language - L
        cNewKey = 'l';
        break;
      case 0x838:                 // Menu - O
        cNewKey = 'o';
        break;
      case 0x836:                 // Guide - G (11111)
        cNewKey = 'g';
        break;
      case 0x95F:                 // Context menu - C (22222)
        cNewKey = 'c';
        break;
      case 0x83B:                 // Back
        cNewKey = KEY_BACKSPACE;
        break;
      case 0x834:                 // [Blue] Home
        cNewKey = KEY_ESC;
        break;
      case 0x945:                 // [Green] Переключение звука - ТВ/ресивер - F7 (00093)
        cNewKey = KEY_F7;
        break;
      case 0x812:                 // Volume Up - F10 (00111)
        cNewKey = KEY_F10;
        break;
      case 0x959:                 // Volume Down - F9 (00222)
        cNewKey = KEY_F9;
        break;
      case 0x80D:                 // Mute - F8
        cNewKey = KEY_F8;
        break;
      case 0x966:                 // ChUp (00001)
        cNewKey = KEY_PAGE_UP;
        break;
      case 0x97E:                 // ChDown (00002)
        cNewKey = KEY_PAGE_DOWN;
        break;
      case 0x820:                 // Up
        cNewKey = KEY_UP_ARROW;
        break;
      case 0x811:                 // Left
        cNewKey = KEY_LEFT_ARROW;
        break;
      case 0x825:                 // OK
        cNewKey = KEY_RETURN;
        break;
      case 0x810:                 // Right
        cNewKey = KEY_RIGHT_ARROW;
        break;
      case 0x821:                 // Down
        cNewKey = KEY_DOWN_ARROW;
        break;
      case 0x83C:                 // Rew - R
        cNewKey = 'r';
        break;
      case 0x82B:                 // Play - P
        cNewKey = 'p';
        break;
      case 0x83F:                 // FF - F
        cNewKey = 'f';
        break;
      case 0xD35:                 // Prev - , (00091)
        cNewKey = ',';
        break;
      case 0x829:                 // Pause - " "
        cNewKey = ' ';
        break;
      case 0x94D:                 // Next - .  (00092)
        cNewKey = '.';
        break;
      case 0x82E:                 // Stop - X
        cNewKey = 'x';
        break;
      case 0x801:                 // 1
        cNewKey = '1';
        break;
      case 0x802:                 // 2
        cNewKey = '2';
        break;
      case 0x803:                 // 3
        cNewKey = '3';
        break;
      case 0x804:                 // 4
        cNewKey = '4';
        break;
      case 0x805:                 // 5
        cNewKey = '5';
        break;
      case 0x806:                 // 6
        cNewKey = '6';
        break;
      case 0x807:                 // 7
        cNewKey = '7';
        break;
      case 0x808:                 // 8
        cNewKey = '8';
        break;
      case 0x809:                 // 9
        cNewKey = '9';
        break;
      case 0x800:                 // 0
        cNewKey = '0';
        break;
      default:
        nTurn = 0;
      }
    irrecv.resume();
    }
  if( cNewKey )
    {
    if( nPressedButton ) ReleaseKey();

    nPressedButton = ir_data.value;
    Keyboard.press( cNewKey );
    }
  else if( nPressedButton )
    {
    if( ++nTurn >= hold_cycles ) ReleaseKey();
    }
  }

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

нет таких программ. считать из ардуино в "читабельном" виде нельзя (без кучи денег и знаний)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

JollyBiber пишет:

нет таких программ. считать из ардуино в "читабельном" виде нельзя (без кучи денег и знаний)


Че енто вдруг? Ты еще скажи что Страдивари барабаны для реальных пацанов не делал.
Да и читается все с ардуино, только оно на асме :)

deniska2
Offline
Зарегистрирован: 18.08.2014

Сам немного ступил,постановка вопроса не правильная.

Имелось ввиду,программирование с последующей верификацией данных.Т.е. чтобы точно убедиться.что Ардуинка прошита.Т.к. сейчас не знаю точно,прошилась ли она (горят светодиоды RX и TX постоянно,должно ли так быть по условию приведенной программы или нет) или просто контроллер в ступор ввёл.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

если шьете через ардуиновскую IDE и компилятор и Ко не ругаются - значит прошилось. Попробуйте просто помргать светиком если все ок, то ей пофигу какой код принимать.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Во народ дает. Пишут скечи которые ничего не делают и думают как же определить прошился он или нет.

deniska2
Offline
Зарегистрирован: 18.08.2014

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

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Крута нереально. Приемник принимает сигнал который обрабатывает компьютер что бы потом ардуино включил через реле компьютер. Ммм это какие то скрытые от мировой обществености возможности выключеных компьютеров?

deniska2
Offline
Зарегистрирован: 18.08.2014

Так задумал автор сего скетча,зачем было городить огород,не знаю.Я только своеобразный тестировщик сего чуда.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

А тоесть у вас не возникает никаких вопросов в голове?
Ну например как выключеный компьютер может что то обрабатывать? Хотч может это компьютер зомби?