-
Ардуино для чайников!
Всем привет! Прочитав про это устройство очень захотелось такое заиметь. Только вот остается один нюанс-никак не могу найти талкового самоучителя по данному устройству... Описания языка на русском http://rln.nnov.ru/index.php?pid=14 не принесло никакого результата...подскажите пожалуйста-где найти достойную литературу, где все разжевано с нуля...заранее всех благодарю п.с. советовали почитать на хабре--тоже толком ничего там не написано...
-
Re: Ардуино для чайников!
Проще начать писать свой скетчь и в процессе задавать вопросы.
Для начала вот здесь почитай http://www.compcar.ru/forum/showthread.php?t=4296
-
Re: Ардуино для чайников!
Цитата:
Сообщение от
eyler
...никак не могу найти талкового самоучителя по данному устройству...
В основной программе скетче-писания неплохие примеры - открываете, изучаете, прошиваете, пробуете чуть переделывать под свои мысли... Очень хорошо всё начинает пониматься.
-
Re: Ардуино для чайников!
Спасибо огромное! С нетерпением жду еще ответов!
-
Re: Ардуино для чайников!
-
Re: Ардуино для чайников!
Здравствуйте.
Очень понравились Ваши советы. Следуя им я написал скетчь и у меня появились вопросы.Это прибор который отслеживает качество покрытия проволоки.Три датчика информируют о браке и посылают сигнал о нём.Счётчик считает кол-во оборотов колеса и переводит их в метры. Вся информация выводиться на экран. Проект сделан на Arduino Nano V 4.0. Вот скетчь .
PHP код:
boolean Impuls, OldImpuls;
boolean Im, OldIm;
boolean Imp, OldImp;
boolean Impu, OldImpu;
boolean Impul, OldImpul;
int a=0;
byte inprobelPin=2;
byte innarostPin=3;
byte insbrosPin=4;
byte inshetPin=5;
byte inkoneshPin=6;
byte ledPin=7;
byte lampPin=8;
byte sirenaPin=9;
void setup() // начальные установки
{
Serial.begin(9600); // установка скорости работы серийного порта на 9600 бит/сек
pinMode(inprobelPin, INPUT); // установка 2-его порта на ввод данных пробел
pinMode(innarostPin, INPUT); // установка 3-его порта на ввод данных нарост
pinMode(insbrosPin, INPUT); // установка 4-ого порта на ввод данных пробел 2
pinMode(inshetPin, INPUT); // установка 5-ого порта на ввод данных счётчик
pinMode(inkoneshPin, INPUT); // установка 6-ого порта на ввод данных конец счёта
pinMode(ledPin, OUTPUT); // установка 7-ого порта на вывод данных лампа 1
pinMode(lampPin, OUTPUT); // установка 8-ого порта на вывод данных лампа 2
pinMode(sirenaPin, OUTPUT); // установка 9-ого порта на вывод данных сирена
}
// Программа проверяет порты на наличие на нём сигнала и посылает ответ в
// виде текстового сообщения на последовательный порт компьютера
void loop() // тело программы
{
OldImp=Imp;
if (digitalRead(inprobelPin) == HIGH) // условие на опрос 2го порта
{
Imp=true;
digitalWrite(ledPin,HIGH);//включился лампа 1
digitalWrite(sirenaPin,HIGH);//включился сирена
}
else
{
Imp=false;
digitalWrite(ledPin,LOW);//выключился лампа 1
digitalWrite(sirenaPin,LOW);//выключился сирена
}
if (Imp && !OldImp)
{
Serial.println(v()); // отправка сообщения в виде цифры равной метражу на COM-порт
Serial.println('P'); // отправка сообщения в виде буквы «probel» на COM-порт
}
OldImpu=Impu;
if (digitalRead(innarostPin) == HIGH) // условие на опрос 3 го порта
{
Impu=true;
digitalWrite(lampPin,HIGH);//включился лампа 2
digitalWrite(sirenaPin,HIGH);//включился сирена
}
else
{
Impu=false;
digitalWrite(lampPin,LOW);//выключился лампа 2
digitalWrite(sirenaPin,LOW);//выключился сирена
}
if (Impu && !OldImpu)
{
Serial.println(v()); //отправка сообщения в виде цифры равной метражу на COM-порт
Serial.println('N'); // отправка сообщения в виде буквы «narost» на COM-порт
}
OldImpul=Impul;
OldIm=Im;
if (digitalRead(insbrosPin) == HIGH) // условие на опрос 4го порта
{
Im=true;
digitalWrite(ledPin,HIGH);//включился лампа 1
digitalWrite(sirenaPin,HIGH);//включился сирена
}
else
{
Im=false;
digitalWrite(ledPin,LOW);//выключился лампа 1
digitalWrite(sirenaPin,LOW);//выключился сирена
}
if (Im && !OldIm)
{
Serial.println(v()); // отправка сообщения в виде цифры равной метражу на COM-порт
Serial.println('P'); // отправка сообщения в виде буквы «probel» на COM-порт;
}
OldImpuls=Impuls;
if (digitalRead(inshetPin) == HIGH) // условие на опрос 5го порта
{
Impuls=true;
}
else
{
Impuls=false;
}
if (Impuls && !OldImpuls)
{
a++;
}
if (digitalRead(inkoneshPin) == HIGH) // условие на опрос 6 го порта
{
Impul=true;
}
else
{
Impul=false;
}
if (Impul && !OldImpul)
{
Serial.println(v()); // отправка сообщения в виде цифры равной метражу на COM-порт
Serial.println('E'); // отправка сообщения в виде буквы «end» на COM-порт
}
}
float v()
{
float s;
s=a;
s*=1.2;
return s;
}
Программа запускается и работает но возникают вопросы
1 .Почему так медлено .Очень медлено.Входы недоступны несколько секунд,а он должен счетать .
2. Не могу прописать narost при выводе на COM-порт ,выводит какие то цифры.
3. При подключение внешнего питания на плату 12 V входы начинают самопроизвольно срабатывать.
Помогите пожалуйста найти ошибки .
Прошу строго не судить ведь это мой первый мой проект.
-
Re: Ардуино для чайников!
для начало чтоб не прыгали сами данные надо в скетче подтянуть встроенные резисторы
пример
pinMode(inprobelPin, INPUT); //объявляешь пин входом
pinMode(inprobelPin, LOW); // подтягиваешь встроенный резистор на минус
-
Re: Ардуино для чайников!
Сделал как Вы посоветовали.
Serial.begin(9600); // установка скорости работы серийного порта на 9600 бит/сек
pinMode(inprobelPin, INPUT); // установка 2-его порта на ввод данных пробел
pinMode(inprobelPin, LOW);
pinMode(innarostPin, INPUT); // установка 3-его порта на ввод данных нарост
pinMode(innarostPin, LOW);
pinMode(insbrosPin, INPUT); // установка 4-ого порта на ввод данных пробел 2
pinMode(insbrosPin, LOW);
pinMode(inshetPin, INPUT); // установка 5-ого порта на ввод данных счётчик
pinMode(inshetPin, LOW);
pinMode(inkoneshPin, INPUT); // установка 6-ого порта на ввод данных конец счёта
pinMode(inkoneshPin, LOW);
pinMode(ledPin, OUTPUT); // установка 7-ого порта на вывод данных лампа 1
pinMode(lampPin, OUTPUT); // установка 8-ого порта на вывод данных лампа 2
pinMode(sirenaPin, OUTPUT); // установка 9-ого порта на вывод данных сирена
Но к сожалению это никак не помогло. Входы сами возбуждаются.
Может мне не повезло и попалась бракованная плата?
-
Re: Ардуино для чайников!
Было бы неплохо схемку набросать. Куда, чего и как подключали. Математика и железо взаимосвязаны.
-
Re: Ардуино для чайников!
Ошибочка, подтягивающие резистры подключаются вот так:
pinMode(inprobelPin, INPUT);
pinMode(inprobelPin, HIGH);
-
Re: Ардуино для чайников!
Да в том и дело что ещё ничего не подключал ,просто проверяю, а она фонит.Поставил Arduino на макетку к выходам подключил светодиоды через 910 Ом на минус Arduino. Между+5V и минусом поставил 10 кОм и оттуда подаю 5 V на входы в ручном режиме проводком .Питание от USB ,бывает сам срабатывает вход №6 и всё очень медлено . Но если даже если всё отключить, просто подключить Arduino к USB и поднести палец близко к плате вход может сработать, а если включить зарядку ноутбука или подключить внешние 12V всё будет срабатывать постоянно.
-
Re: Ардуино для чайников!
Я же Вам указал на ошибку
-
Re: Ардуино для чайников!
Прошу прощения. Исправил LOW на HIGH всё заработало правильно и быстро.
Большое спасибо.
Но осталась маленькая проблема, как вывести на экран слово probel ,а то выводит вместо слова цифры 17740 .
-
Re: Ардуино для чайников!
Что то я в Вашем коде не заметил такого слова
-
Re: Ардуино для чайников!
Замени
Serial.println('P');// отправка сообщения в виде буквы «probel» на COM-порт
на
Serial.print("P");// отправка сообщения в виде буквы «probel» на COM-порт
-
Re: Ардуино для чайников!
Разобрался.
Получается следующие:
Serial.println('P'); на мониторе- P
Serial.println('PROBEL');на мониторе-17740
Serial.println("PROBEL");на мониторе-PROBEL
Всем огромное спасибо .
-
Re: Ардуино для чайников!
При воплощении изделия в железе появился следующий вопрос: ток датчиков слишком мал что бы срабатывали входы Arduino, а отключать подтягивающиеся резисторы нельзя иначе Arduino фонит .
Что делать не знаю , подскажите пожалуйста .
-
Re: Ардуино для чайников!
Подскажите начинающему.
Вот уже третий день штудирую инфу по ардуино. Очень затягивает. Залез в тему, где обсуждается панель приборов из под ардуино. У меня вопрос чисто такой теоретический. Понятно, что ардуино передает данные в приложение, где красиво всё со стрелочками тахометра показывается. Но опустили тот момент, как ардуино все это считывает. К пинам платы я вижу, что подведены датчики: света, открытия двери и т. д. Но откуда они берутся? В машине же нет такого пучка проводов: типа нате вам, тут все события по дверям, лампочкам, etc... Предполагаю, что можно снять с OBDII сканера (у меня так в машине на комп и попадают данные). Но тогда: зачем прокладка в виде ардуино, которая потом все равно скидывает данные на десктопное приложение? И как, если с OBDII сканера снимать показатели, разобрать этот массив данных?
Сорри, что так много воды налил, но хочется поконкретнее чтобы разжевали новичку в ардуиностроении.
-
Re: Ардуино для чайников!
Цитата:
Сообщение от
Artemiy
...Но откуда они берутся? В машине же нет такого пучка проводов: типа нате вам, тут все события по дверям, лампочкам, etc... Предполагаю, что можно снять с OBDII сканера (у меня так в машине на комп и попадают данные).
Не поверите, но таки на большинстве машин такой пучек проводов есть. Заодно почитайте про скорость обмена данными OBD и упомянутой выше приборной панели, да заодно и о том какие именно данные можно получить с OBD, а каких там просто нет. для этого и используется там "прокладка в виде ардуино"
-
Re: Ардуино для чайников!
Цитата:
Сообщение от
Ключ
При воплощении изделия в железе появился следующий вопрос: ток датчиков слишком мал что бы срабатывали входы Arduino, а отключать подтягивающиеся резисторы нельзя иначе Arduino фонит .
Что делать не знаю , подскажите пожалуйста .
И все же. Было бы неплохо посмотреть на схемку подключения.
Исходя из текста программы, отслеживаются жесткие состояния на портах (да или нет).
Исходя из этого могу посоветовать, использовать компаратор. И, непосредственно ним, отслеживать диапазон состояния на датчике.
И уже с него получать логическую еденицу или ноль (описанную в вашей программе).
Ну, как то, так.
-
Re: Ардуино для чайников!
Прибор состоит из готовых китайских модулей.Согласно Вашего совета после датчика поставил "компаратор модуль lm393" его выход "DO" соединил с "D2" ардуино ,после соединения на модуле
загорается светодиод как будто модуль сработал от сигнала , при подаче сигнала на компаратор ардуино не срабатывает. Между+5V и минусом поставил 10 кОм и оттуда вручную подал 5V на "D2" ардуино всё работает.
Не пойму, где ошибка ?
-
Re: Ардуино для чайников!
Скорее всего неправильно рассчитаны делители опорного и сравниваемого сигналов на входах компаратора. Как вариант, можно читать данные с датчика не в лоб (HI/LOW), а как диапазон значений и отфильтровать нужный диапазон. Это, мне кажется, будет более правильный способ.
-
Re: Ардуино для чайников!
Посоветуйте, в какой лучше программе пособирать и позапускать скетчи и виртуально сделать макет с Ардуиной? Пока едет сама Ардуинка.
Какая более удобная и понятная? Fritzing, VBB, ISIS..?
-
Re: Ардуино для чайников!
-
Re: Ардуино для чайников!
Добрый день. В наличии имеется емкостной тачскрин Hannstouch AH-OA1S V1.0 E241232. В нем используется микросхема:
TX64A1
Q4P921.1
1202
К сожалению мне не удалось найти даташит на данную микросхему, поэтому надо выяснить протокол обмена данными. Для этого тачскрин подключен к Ардуино Нано v3.0. На плате тачскрина выведено в шлейф 6 сигналов: 6-gnd, 5-vcc, 4-int, 3-rst, 2-ck, 1-dat, scl и sda тоже имеются на плате, но их нету в шлейфе. Установлено, что тачскрин работает по интерфейсу PS/2. Есть вот такой скетч:
PHP код:
/*
* скетч для работы с ps/2-мышкой
*/
#include <ps2.h>
/*
* к Pin 5 - подключена линия Data, а к pin 6 – линия Clock
*/
PS2 mouse(6, 5);
/*
* Инициализация работы с мышкой.
* Посылается команда Сброса (Reset it)
* затем мышка переводится режим remote mode
* так, что мы получаем от неё данные по запросу
*/
void mouse_init()
{
mouse.write(0xff); // reset
mouse.read(); // ack byte
mouse.read(); // blank */
mouse.read(); // blank */
mouse.write(0xf0); // remote mode
mouse.read(); // ack
delayMicroseconds(100);
}
void setup()
{
Serial.begin(9600);
mouse_init();
}
/*
* считываем данные с мышки и выводим в COM-порт
*/
void loop()
{
char mstat;
char mx;
char my;
/* запрашиваем данные от мышки */
mouse.write(0xeb); // команда на чтение данных
mouse.read(); // игнорируем ack
mstat = mouse.read();
mx = mouse.read();
my = mouse.read();
/* выводим данные в COM-порт*/
Serial.print(mstat, BIN);
Serial.print("\tX=");
Serial.print(mx, DEC);
Serial.print("\tY=");
Serial.print(my, DEC);
Serial.println();
// delay(20);
}
C:\Users\54D3~1\AppData\Local\Temp\arduino_5b82caf 7d704f36d4e3377fc8c0231f6\sketch_nov27a.ino:5:17: fatal error: ps2.h: No such file or directory
#include <ps2.h>
^
compilation terminated.
exit status 1
Ошибка компиляции.
Что я делаю не так?
-
Re: Ардуино для чайников!
А библиотеку ps2.h установили?
-
Re: Ардуино для чайников!
Да, я скачал архив ps2.zip там есть файлик ps2.h. Как его установить?
Библиотеку поставил, теперь ругается на:
WProgram.h: No such file or directory
-
Re: Ардуино для чайников!
Нужно править этот файлик
поменяйте
Код:
Код:#include "WProgram.h"
на Код:
Код:
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
-
Re: Ардуино для чайников!
Скетч исправил, скомпилировал, загрузил в ардуино. Когда двигаю пальцем, в экране монитор COM порта 3 нету данных. Заметил в скетче не прописан pinout сигнала int. Выход со шлейфа тачскрина подключал к ардуино, так:
GND - GND
VCC - 3V3 (3,3В)
INT - D3
RST - RST
CK - D5
DAT - D6
По спецификации PS\2 на VCC надо подавать 5В, а если сгорит тачскрин?
http://robocraft.ru/blog/communication/100.html
http://robocraft.ru/blog/arduino/101.html
-
Re: Ардуино для чайников!
Проблема в следующем, нужно одновременно выводить картинку через TVout и звук через динамик.
Ниже приведен рабочий код - звук "бип" длительностью 0.8сек выводится по событию таймера через каждые 1.5сек, если раскомментировать строку TV.begin - звук не выводится. Догадываюсь, что связано с задержками delay где-то в недрах TVout и длительностью звука. Подскажите альтернативный путь.
Код:
#include <TVout.h>
#include <fontALL.h>
#include "pitches.h"
#include <MsTimer2.h>
TVout TV;
#define SpeakerPin 10// Контакт 10 для динамика
// Контакт 11 для Tvout Sync ЗАНЯТО!!!!
void setup()
{
MsTimer2::set(1500, Timer2_Timer); // таймер будет срабатывать через каждые 1500ms
MsTimer2::start();//запустить таймер
// TV.begin(PAL,120,96);
}
void loop()
{
}
void Timer2_Timer()
{
tone(SpeakerPin, NOTE_E4,800);
}
-
Re: Ардуино для чайников!
скорее всего <TVout.h> использует тот же таймер что и бибпер
-
Re: Ардуино для чайников!
-
Re: Ардуино для чайников!
а как отключить БП светодиодной ленты ( в цветомузыке, в амбилайте), когда нет сигнала, с некоторым опозданием . или может лучше привязать к +5V USB порта , ну или питания ардуины
-
Re: Ардуино для чайников!
Можно релюшкой или через MOSFET
-
Re: Ардуино для чайников!
МОСФЕТом коммутировать переменку ? Имелось в виду ВООБЩЕ отключить БП , зачем там постоянку отк/
И что в ардуине нету блоков управления нагрузкой переменного тока? Я не знаю например на симисторе с опторазвязкой куда в таком случае "привязать" оптрон в таком случае? Надо что то добавлять в скетч или тупо к питанию самой ардуины, или тупо 5V реле, с комутированием переменки питания БП.
-
Re: Ардуино для чайников!
-
Re: Ардуино для чайников!
Либо я чего то не понимаю либо ты чего то не дочитал .... 4м ленты питание ленты не 5В, а 12В (выбрал такую так как БП меньше получается) получается 52 ватта примерно .. это отдельный БП... примерно будет 70- 80 ватт что бы с запасом .. так вот речь о том как его , всего отключить , а переменка он то как раз и включается в переменку, и вот эту переменку надо разорвать , а ты что предлагал мне мосфетом выключить если вроде из моего вопроса вверху было вроде понятно ... или где взять питание для ленты ? если телек не работает всю ночь зачем БП должен работать, аотдельно еще и это включать ну как то... хоть там и будет хх... но даже если вот так
https://alexgyver.ru/arduino_ambilight/#iLightbox[91471a5636061bb323]/0 то этому БП зачем все время быть включенным когда можно сделать на автомате
-
Re: Ардуино для чайников!
я конечно понимаю что амбилайт это не совсем для новичков ,, но есть куча вопросов где их можно задать ? может есть ссылка какая может форум что то поиском только готовые решения
-
Re: Ардуино для чайников!
Я сначала не совсем понял вопрос. Теперь все понятно.
Отвечаю:
Можно отключать при помощи симистора через оптрон, но тогда непонятно, как его включать.
Если питания не будет то и включить устройство неполучится
-
Re: Ардуино для чайников!
а если взять питание 5В с ардуины ? там же оно появится когда телек вкл?