Помогите, пожалуйста, с arduino pro mini

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Ребят, помогите, пожалуйста! Навернулся холодильник, оказалось модуль управления под замену. Новый стоит 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
Коннекты перепроверил сто пятьдесят раз, купил новый комплект, перепаял ножки, сплясал тумбу юмбу, помолился Квазердузеру, нифига не получилось.
Перерыл вест инет на эту тему, кроме советов проверить подключения и дрова ничего путного.
Может есть кто толковый в этом вопросе?
p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015
avrdude.exe: Ошибка: Программа позволит: цель не отвечает. 1 
avrdude.exe: Сбой инициализации, гс = -1
             Двойное подключение проверьте и попробуйте еще раз, или использовать -F, чтобы переопределить
             эта проверка.
Устройство подпись = 0x000000
Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Да, спасибо, я перевел. МК не отвечает готовностью, это понятно. Что делать то?

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

На ардуинке диод питания горит, при обращении через программатор диод активности моргает, но ответ один - error ((((

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

Про мини шьется после нажатия кнопки ресет.

Первый раз прошивая можно не жать, далее мучайся попадай.

В уно и прочих это уже сделали .....

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

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

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

Dimmm пишет:

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

Программатор смени на AVRISP mkll и USB порт дргой...

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Попробую, но не понятна природа ошибки, дело в программаторе? У меня их два, на обоих одно и тоже. Сами программаторы шьются отлично (обновил прошивки).

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Люди! Поможет кто?!

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Фьюзами наверно поигрался.... попробуй набрать в поисковике "Как разлочить AVR"

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Dimmm, информации для советов недостаточно. Очевидный шаг диагностики  -прочитать программатором любой другой МК. Если вы до этого прошивали Эту плату, и все соединения целые -стало быть либо МК сдох, либо вы его залочили кривыми фузами.

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

да, скорее всего дело в фьюзах. Скачал хазаму и тыкал ее с подключенным МК. Скорее всего тыкнул в Fuse and Lock. Это логичная причина, тем более что диод активности реагирует. Теперь осталось понять как разлочить.

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Посоветуете как разлочить?

IgorKa
Offline
Зарегистрирован: 06.11.2016

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

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Ребят, осуществляю одиночный проект, не очень хочется еще что то покупать для решения проблемы (вдруг не пригодится больше), есть кто в Казани с доктором фьюзов? Я бы подъехал сам... Отзовитесь кто нить))) Жалко просто ардуинку про мини.

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Всем спасибо! Решил проблему, все на много проще

IgorU
Offline
Зарегистрирован: 03.12.2014

Проще, это как? Разлочил, поделись опытом, а то только спрашиваешь...

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Сходил, купил))) Времени нет пока, оставил до лучших времен (обязательно разберусь). Пока холодильник надо запустить срочно.

Кстати запустил, даже функция NoFrost работает. Ардушка - СИЛА! Сэкономил кучу денег.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Dimmm пишет:

Сходил, купил))) Времени нет пока, оставил до лучших времен (обязательно разберусь). Пока холодильник надо запустить срочно.

Кстати запустил, даже функция NoFrost работает. Ардушка - СИЛА! Сэкономил кучу денег.

а скетч в студию?

Dimmm
Dimmm аватар
Offline
Зарегистрирован: 07.11.2016

Запросто

#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");
      }
     }
// ///////////////////////////////////////////////