Помогите разобраться Новичку

damber
Offline
Зарегистрирован: 05.10.2014

Задача состоит в том, что бы сделать лампу которая будет плано включаться с утра и выключаться также плавно вечером по заданным параметрам. В лампе 7 разных каналов на каждый канал своя яркость.

Имеется:

1. Led сборка 7 мощных светодиодов 

2. Драйвер Leddrv-24v-x7 MeanWell

3. Блок питания 12v

4. Китайский аналок Ардуино леонардо

5. Таймер реального времени

6. Пульт д\у ( использование под вопросом)

 

Фото прилагаются

 

 

vvadim
Offline
Зарегистрирован: 23.05.2012

Хотите получить готовый код - http://arduino.ru/forumy/ishchu-ispolnitelya

А гуглить за вас как менять яркость светодиодов никто не будет.

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

damber
Offline
Зарегистрирован: 05.10.2014

Добрый день! Спасибо, что отписались.

За прошедшее время понял в чем у меня загвоздка )

Мне нужно проверить работоспособность конроллера. 

Я загружал пробную программу blink в в arduino ide было написано что загружено, а свтодиоды мигали только при загрузке потом нет. Хочется определить рабочая ли плата или в чем проблема почему не мигают.  Когда выбираю плату ардуинолеонардо при загрузке диоды мигают потом тухнут остается 1 который показывает питание. Когда ставлю ардуино micro pro светятся все светодиоы и мигают при загрузке. Светодиод должен мигать постоянно после загрузки "Blink" ?

 

 

vvadim
Offline
Зарегистрирован: 23.05.2012

При  загрузке примера blink должен мигать встроенный светодиод на 13 пине.

Но может и 13 пин быть не рабочим, а все остальные в порядке.

damber
Offline
Зарегистрирован: 05.10.2014

Как я понимаю для полноценной проверки платы нужен отдельный светодиод с резистором ? И мультиметр для проверки каналов ? 

damber
Offline
Зарегистрирован: 05.10.2014

Посоветуйте Литературу или сылку на хороший обучающий материал с комментариями если такие имеются)

vvadim
Offline
Зарегистрирован: 23.05.2012

Bот  maksim выкладывал  код для проверки ардуины

#define FIRST_PIN 0 // первый вывод
#define LAST_PIN 19 // последний вывод

void Test1(byte pin)
{
  if(pin < 10) Serial.print(" PIN:  ");
  else Serial.print(" PIN: ");
  Serial.print(pin);
  pinMode(pin, OUTPUT);
  digitalWrite(pin, 0);
  Serial.print("    LOW: ");
  if(!digitalRead(pin)) Serial.print("OK  ");
  else Serial.print("FAIL");
  digitalWrite(pin, 1);
  Serial.print("  HIGH: ");
  if(digitalRead(pin)) Serial.print("OK  "); 
  else Serial.print("FAIL");
  pinMode(pin, INPUT);
  Serial.print("  PULL UP: ");
  if(digitalRead(pin)) Serial.print("OK  ");
  else Serial.print("FAIL");
  digitalWrite(pin, 0);
}

void Test2(byte pin)
{
  Serial.print("     ");
  pinMode(pin, OUTPUT);
  digitalWrite(pin, 1);
  delay(5);
  if(!digitalRead(pin))Serial.println("SHORT");
  else Serial.println("OK");
  pinMode(pin, INPUT); 
  digitalWrite(pin, 0);

}

void setup() {
  Serial.begin(9600); 

  Serial.println("Test of short circuit on GND or VCC and between pins:");
  Serial.println();
  for(byte i = FIRST_PIN; i <= LAST_PIN; i++) 
  {
    for(byte j = FIRST_PIN; j <= LAST_PIN; j++) 
    {
      pinMode(j, INPUT);
      digitalWrite(j, 0);
    }
    Test1(i);

    for(byte j = FIRST_PIN; j <= LAST_PIN; j++) 
    {
      pinMode(j, OUTPUT);
      digitalWrite(j, 0);
    }
    Test2(i);
  }

  for(byte j = FIRST_PIN; j <= LAST_PIN; j++) 
  {
    pinMode(j, INPUT);
    digitalWrite(j, 0);
  }
}

void loop() {}

 

Посмотрите видеоуроки Джероми Блума , их кажется 13 с переводом

 

damber
Offline
Зарегистрирован: 05.10.2014

Что должно произойти после запуска программы для проверки кода?

vvadim
Offline
Зарегистрирован: 23.05.2012

Посмотреть в Serial

damber
Offline
Зарегистрирован: 05.10.2014

Изучаю) 

ШИМ сигнал 5в. Плата питается по USB от ПК этого хватит или нужно подключать к блоку питания ?

vvadim
Offline
Зарегистрирован: 23.05.2012

Ну юсб и даёт 5 вольт. 

faraddin
Offline
Зарегистрирован: 11.08.2013

http://easyelectronics.ru/podklyuchenie-mikrokontrollera-likbez.html

В этой статье и других статьях цикла "AVR. Учебный курс" достаточно доходчиво (в картинках) разъясняют много вопросов. Посмотрите. Там правда програмный код представлен либо на С либо на ASM, но в остальном много полезного

damber
Offline
Зарегистрирован: 05.10.2014

С 2.5v светодиодом резистором 220ом опыт получился работает и мигает и яркость прибавляется убавляется.  

Когда подключаю драйвер ни чего не происходит. Из драйвера есть специальный выход к контроллеру. 

damber
Offline
Зарегистрирован: 05.10.2014

Все работает землю от контроллеру к драйверу не подключил )))) Спасибо за помощь начинаю писать программу )

 

Следующий вопрос ) Пульт и таймер реального времени пока разбираюсь сам.

damber
Offline
Зарегистрирован: 05.10.2014

Время работы и задержку можно прописать програмно и не ставить лишний чип ?! 

 

Что бы регулировать температуру можно поставить к светодиоду "термический резистор" с винтелятором чтоб охлаждать при перегреве ?!

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

damber пишет:

Время работы и задержку можно прописать програмно и не ставить лишний чип ?! 

 

Что бы регулировать температуру можно поставить к светодиоду "термический резистор" с винтелятором чтоб охлаждать при перегреве ?!


Для времени нужен отдельно ардуино и для задержки еще один. И заместо радиатора тоже поставьте ещетодну ардуино с датчиком температуры и кондиционером.

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

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

damber
Offline
Зарегистрирован: 05.10.2014

Тема закрыта всем Спасибо!

bil711
Offline
Зарегистрирован: 10.10.2014

помогите понять как , через последовательный порт ввести символы (например 12345678 или hello)  и чтобы ардуино также ответил в последовательный порт 12345678 или hello. Это нужно усложнить?

int x = 0;

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

void loop() 
{
  
   x = Serial.read(); 
   Serial.println(x);
   delay(1000);
}

 

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

bil711 пишет:

помогите понять как , через последовательный порт ввести символы (например 12345678 или hello)  и чтобы ардуино также ответил в последовательный порт 12345678 или hello. Это нужно усложнить?

int x = 0;

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

void loop() 
{
  
   x = Serial.read(); 
   Serial.println(x);
   delay(1000);
}

 


Почитать про типы переменных?

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

bil711 пишет:
Это нужно усложнить?

Дружище, этот вопрос наталкивает меня на мысль, что попытка записать код в Arduino и посмотреть потом в Serial monitor так и не предпринималась...

bil711
Offline
Зарегистрирован: 10.10.2014

Puhlyaviy пишет:

Почитать про типы переменных?

я почитал, ну как почитал ... чуть чуть

переменные глобальные локальные..   не наверно не прото...

std пишет:

Дружище, этот вопрос наталкивает меня на мысль, что попытка записать код в Arduino и посмотреть потом в Serial monitor так и не предпринималась... 

я запускал! как щас помню

проблема выглядит так я ему 1 мне он 49, ему 8 он 56.

что то с таблицей ASCII я ему в Char он мне в DEC, нужно это как то преобразовать? и еще он каждую цифру отдельно пережевывает 18 выглядит как 49,56

кароче ума не хватает, как называется эта штука?

зарание спасибо

 

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

Гыыы

Radjah
Offline
Зарегистрирован: 06.08.2014
Строка ПАМЯТЬ = пусто

Если порт.есть_чо

Короче

  ПАМЯТЬ += порт.давай_сюда_чо_у_тебя_там

  порт.закрой_хайло_и_слушай_чо_скажу(ПАМЯТЬ)

Всё_вроде

 

bil711
Offline
Зарегистрирован: 10.10.2014

Radjah пишет:

Строка ПАМЯТЬ = пусто

Если порт.есть_чо

Короче

  ПАМЯТЬ += порт.давай_сюда_чо_у_тебя_там

  порт.закрой_хайло_и_слушай_чо_скажу(ПАМЯТЬ)

Всё_вроде

 

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

вот что у меня вышло, как я хотел!

int x = 0;   // переменная для хранения байта данных,
int y = 0;
char mas[128];// массив 
                        
 
void setup() 
{
        Serial.begin(9600);     //последовательный порт
                                
}
 
void loop() 
{  
  x = 0; // сброс перемен
 memset(mas, '\0', 128); // Очищаем массив, заполняеме его нулями 
  if (Serial.available()>0) // ждем даные, борльше нечего
  { 
    delay(200); // дожидаемся всех данных
    x = Serial.available(); // получ длин строку и запи с ее в перемен
    for(int i = 0; i < x; i++)
    {
      mas[i] = Serial.read(); 
    }
   
      Serial.println (mas);
      }  
 }  

меня интересует эта строчка очищение массива, memset(mas, '\0', 128); эта команда негде не упоминается. Что это из какой оперы?, как еще можно очистить массив? Как можно написать этот код по другому?

Radjah
Offline
Зарегистрирован: 06.08.2014

Гуглю на полставки.

http://www.cplusplus.com/reference/cstring/memset/

sergeevalex
Offline
Зарегистрирован: 15.10.2012

2 bil711,

Данные хранятся посимвольно в аскиикоде. 1 = 48+1 = 49, 8 = 48+8 = 56, 18 = 49;56

По работе с сериал (как код упростить) тут же есть готовая справка:

 

http://arduino.ru/Reference/Serial/Available