Помогите, пожалуйста, с arduino pro mini
- Войдите на сайт для отправки комментариев
Пнд, 07/11/2016 - 16:06
Ребят, помогите, пожалуйста! Навернулся холодильник, оказалось модуль управления под замену. Новый стоит 8000 рублей и ждать 3 недели. Решил попробовать собрать модуль на сонове Arduino pro mini. купил все необходимое, собрал скетч, залил с помощью Usbasp и заниался отладкой. Вдруг ни с того ни ссего
avrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
device signature = 0x000000
Бьюсь второй день, нифига не получается. Убилась ардуинка?
Arduino Pro mini ATmega 328P 5V 16MGz
USBasp прошивка новая 2011-05-28
Коннекты перепроверил сто пятьдесят раз, купил новый комплект, перепаял ножки, сплясал тумбу юмбу, помолился Квазердузеру, нифига не получилось.
Перерыл вест инет на эту тему, кроме советов проверить подключения и дрова ничего путного.
Может есть кто толковый в этом вопросе?
Да, спасибо, я перевел. МК не отвечает готовностью, это понятно. Что делать то?
На ардуинке диод питания горит, при обращении через программатор диод активности моргает, но ответ один - error ((((
Про мини шьется после нажатия кнопки ресет.
Первый раз прошивая можно не жать, далее мучайся попадай.
В уно и прочих это уже сделали .....
Пробовал, целый час сидел нажимал - прошивал, хрен...Читаю сайт производителя, может найду че нить. Жаль, что никто не знает решения проблемы...
Пробовал, целый час сидел нажимал - прошивал, хрен...Читаю сайт производителя, может найду че нить. Жаль, что никто не знает решения проблемы...
Программатор смени на AVRISP mkll и USB порт дргой...
Попробую, но не понятна природа ошибки, дело в программаторе? У меня их два, на обоих одно и тоже. Сами программаторы шьются отлично (обновил прошивки).
Люди! Поможет кто?!
Фьюзами наверно поигрался.... попробуй набрать в поисковике "Как разлочить AVR"
Dimmm, информации для советов недостаточно. Очевидный шаг диагностики -прочитать программатором любой другой МК. Если вы до этого прошивали Эту плату, и все соединения целые -стало быть либо МК сдох, либо вы его залочили кривыми фузами.
да, скорее всего дело в фьюзах. Скачал хазаму и тыкал ее с подключенным МК. Скорее всего тыкнул в Fuse and Lock. Это логичная причина, тем более что диод активности реагирует. Теперь осталось понять как разлочить.
Посоветуете как разлочить?
Я в аналогичной ситуации использовал такую штуковину. Собрал ее на беспаечной макетке, к ардуинке подпаял проводки, резисторы на свой страх и риск не использовал.
Ребят, осуществляю одиночный проект, не очень хочется еще что то покупать для решения проблемы (вдруг не пригодится больше), есть кто в Казани с доктором фьюзов? Я бы подъехал сам... Отзовитесь кто нить))) Жалко просто ардуинку про мини.
Всем спасибо! Решил проблему, все на много проще
Проще, это как? Разлочил, поделись опытом, а то только спрашиваешь...
Сходил, купил))) Времени нет пока, оставил до лучших времен (обязательно разберусь). Пока холодильник надо запустить срочно.
Кстати запустил, даже функция NoFrost работает. Ардушка - СИЛА! Сэкономил кучу денег.
Сходил, купил))) Времени нет пока, оставил до лучших времен (обязательно разберусь). Пока холодильник надо запустить срочно.
Кстати запустил, даже функция NoFrost работает. Ардушка - СИЛА! Сэкономил кучу денег.
а скетч в студию?
Запросто
#include <Wire.h> // include the library code: #include <DallasTemperature.h> #include <OneWire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2);// set the LCD address to 0x27 for a 16 chars and 2 line display // I2C на пине 2 #define TEMP_WIRE_BUS 2 OneWire tempWire(TEMP_WIRE_BUS); //объявили переменную датчиков DallasTemperature TempSensors(&tempWire); //объявили структуру типа Даллас термометр DeviceAddress coolThermometer = { 0x28, 0xFF, 0x23, 0xFC, 0x43, 0x16, 0x03, 0xEC }; Датчик на тене DeviceAddress tenThermometer = { 0x28, 0xFF, 0xC0, 0xC6, 0x43, 0x16, 0x04, 0xA8 }; Датчик в морозилке // define variables float tempSensor[2]; // массив куда читается температура c датчиков. byte qty; // количество градусников на шине. Оставил динамической, чтоб менять число датчиков лишь в массиве. byte gradus[8] = { 0b00110, 0b01001, 0b01001, 0b00110, 0b00000, 0b00000, 0b00000, 0b00000 }; // символ градуса ////////////////////////////////////////////////////////////////// //про холодильник #define ReleCompr 4 // реле компрессора #define ReleFun 5 // реле вентилятора #define ReleTen 6 // реле оттайки #define LedAlarm 13 //пин тревоги // ///////////////////////////////////////////////////////////////// void getTemp(){ // читаем температуру и заполняем массив TempSensors.requestTemperatures(); //команда сенсорам заполнить свою память новыми данными tempSensor[0] = TempSensors.getTempC(coolThermometer); // tempSensor[1] = TempSensors.getTempC(tenThermometer); /* for (int i = 0; i < qty; i++) tempSensor[i] = TempSensors.getTempCByIndex(i);//в цикле заполняем массив полученными данными, уже приведенными к градусам Цельсия. */ } // ///////////////////////////////////////////////////////////////// // пороговые значения температуры float tempC; float t1 = -11.0; //порог выключения компрессора float t2 = -9.0; // порог включения компрессора float t3 = -05.0; //порог выключения оттайки float t4 = 02.0; //порог включения оттайки // ///////////////////////////////////////////////////////////////// // вкл выкл компрессора void DoCompr() { digitalWrite(ReleCompr, LOW); } void NoCompr() { digitalWrite(ReleCompr, HIGH); } void DoFun() { digitalWrite(ReleFun, LOW); } void NoFun() { digitalWrite(ReleFun, HIGH); } void DoTen() { digitalWrite(ReleTen, LOW); } void NoTen() { digitalWrite(ReleTen, HIGH); } void printData(){ /////// вывод инфы на экран lcd.setCursor(0, 0); lcd.print("Temp1: "); lcd.print(tempSensor[0]); // показываем температуру с датчика lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Temp2: "); // lcd.print(tempSensor[1]); lcd.print("C"); delay(2000); //2 сек пауза } // ///////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////// void setup() { pinMode(ReleCompr, OUTPUT); pinMode(ReleFun, OUTPUT); pinMode(ReleTen, OUTPUT); TempSensors.begin(); //инициализируем сенсоры lcd.init(); lcd.backlight(); Serial.begin(9600);//инициализируем серийный порт } // ////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////// void loop() { getTemp(); // читаем температуру с датчиков lcd.clear();//очистили экран от предыдущего вывода printData();//печатаем данные if(tempSensor[0] > t2) { if(ReleTen, LOW) { NoCompr(); } else { DoCompr(); DoFun(); lcd.clear(); lcd.setCursor(0, 1); lcd.print("Compr ON"); } } if(tempSensor[0] < t1) { NoCompr(); NoFun(); lcd.clear(); lcd.setCursor(0, 1); lcd.print("Compr OFF"); } if(tempSensor[1] < t3) { DoTen(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Ten ON"); } if(tempSensor[1] > t4) { NoTen(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Ten OFF"); } } // ///////////////////////////////////////////////