Ви не увійшли.
Сначала скетч ждёт первый импульс.
Захватывает текущее время и считает импульсы, пока время меньше 3 сек.
Через 3 сек проверяет сколько импульсов пришло.
Если пришло 10 импульсов - мигает 14 раз.
Если пришло 20 импульсов - мигает 10 раз.помогите в скетче пожалуйста друзья
Где ЭТО в коде ???
вот весь мой код ,,, вот например посматрите на функцию tas(); ,, что эта функция делает ,, при каждом появлении импульса Status -у прибавляет 1 и когда Status == 10 выполняет действие ,,,,, мне надо чтоб Ардуино подождал всех импульсов и только тогда выполнять действие ,, приблизительно должен быть так но реализовать не получается
switch(Status) {
case 10:
//действие
break;
case 20:
//действие
break;
}
вот и код
#include <SPI.h>
#include <MFRC522.h>
MFRC522 rfid(10, 9); // пины SDA, RST
unsigned long Key, KeyTemp; // для храниения № ключа
const int buttonPin = 4; // номер входа, подключенный к кнопке
const int ledPin = 5; // номер выхода светодиода
boolean lastButten = LOW; // предыдущее состояние кнопки
boolean currentButten = LOW; // текущее состояние кнопки
int status = 0; // текущий статус
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // скорость порта
SPI.begin(); // инициализация SPI
rfid.PCD_Init();} // инициализация rfid модуля
boolean debvance (boolean last) //убираем дребизг
{
boolean current = digitalRead (buttonPin); // считываем данные с кнопки
if (last != current) // Если текущее состояни еотличететься от предыдущего
{
delay (5); // Ждем 5 милисек.
current = digitalRead (buttonPin); // Присваеваем текущее состояние кнопки
return current;
}
}
void in(){
currentButten = debvance (lastButten); // Передаем функции дребезга значение по умолчанию LOW
if (lastButten == LOW && currentButten == HIGH) // Проверяем отпускали мы кнопку или нет
{
status = ++status; // инвертируем Статус
}
lastButten = currentButten; // Переприсваеваем прошлое состояние кнопки
if (status == 10) //если статус 5
{
for (int i=0; i<10; i++){
digitalWrite(ledPin,HIGH);
delay(10);
digitalWrite(ledPin,LOW);
delay(50);
}
status = 0;
}
}
void tas(){
currentButten = debvance (lastButten); // Передаем функции дребезга значение по умолчанию LOW
if (lastButten == LOW && currentButten == HIGH) // Проверяем отпускали мы кнопку или нет
{
status = ++status; // инвертируем Статус
}
lastButten = currentButten; // Переприсваеваем прошлое состояние кнопки
if (status == 10) //если статус 5
{
for (int i=0; i<11; i++){
digitalWrite(ledPin,HIGH);
delay(10);
digitalWrite(ledPin,LOW);
delay(50);
}
status = 0;
}
}
void qsan(){
currentButten = debvance (lastButten); // Передаем функции дребезга значение по умолчанию LOW
if (lastButten == LOW && currentButten == HIGH) // Проверяем отпускали мы кнопку или нет
{
status = ++status; // инвертируем Статус
}
lastButten = currentButten; // Переприсваеваем прошлое состояние кнопки
if (status == 10) //если статус 5
{
for (int i=0; i<2; i++){
digitalWrite(ledPin,HIGH);
delay(50);
digitalWrite(ledPin,LOW);
delay(50);
}
status = 0;
}
}
void loop() {
static uint32_t past = 0;
if ( rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
past = millis();
Key = 0;
for (byte i = 0; i < rfid.uid.size; i++) { // Выдача серийного № ключа
KeyTemp = rfid.uid.uidByte[i];
Key = Key * 256 + KeyTemp;
}
Serial.println();
Serial.print("Card №: ");
Serial.print(Key); // Выводим № ключа в консоль
if (Key == 515280555) tas();
if (Key == 1459297918) qsan();
}
if (millis() - past >= 50) {
Serial.println();
Serial.print("0"); // Поиск нового ключа
if (Key == 0) in();
}
}
Давайте свой код и опишите, что не получается - конечно поможем...
Сначала скетч ждёт первый импульс.
Захватывает текущее время и считает импульсы, пока время меньше 3 сек.
Через 3 сек проверяет сколько импульсов пришло.
Если пришло 10 импульсов - мигает 14 раз.
Если пришло 20 импульсов - мигает 10 раз.
помогите в скетче пожалуйста друзья