Здравствуйте.
Очень понравились Ваши советы. Следуя им я написал скетчь и у меня появились вопросы.Это прибор который отслеживает качество покрытия проволоки.Три датчика информируют о браке и посылают сигнал о нём.Счётчик считает кол-во оборотов колеса и переводит их в метры. Вся информация выводиться на экран. Проект сделан на 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 входы начинают самопроизвольно срабатывать.
Помогите пожалуйста найти ошибки .
Прошу строго не судить ведь это мой первый мой проект.