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);