#1 2017-07-05 15:13:18

Suro
Учасник
Зареєстрований: 2017-07-05
Повідомлень: 8

ожидание всех импульсов

Сначала скетч ждёт первый импульс.
Захватывает текущее время и считает импульсы, пока время меньше 3 сек.
Через 3 сек проверяет сколько импульсов пришло.
Если пришло 10 импульсов - мигает 14 раз.
Если пришло 20 импульсов - мигает 10 раз.

помогите в скетче пожалуйста друзья

Неактивний

#2 2017-07-07 21:02:20

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: ожидание всех импульсов

Давайте свой код и опишите, что не получается - конечно поможем...

Неактивний

#3 2017-07-08 20:14:57

Suro
Учасник
Зареєстрований: 2017-07-05
Повідомлень: 8

Re: ожидание всех импульсов

вот весь мой код ,,, вот например посматрите на функцию 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();
  }
  
}

Неактивний

#4 2017-07-08 22:50:09

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: ожидание всех импульсов

Suro пише:

Сначала скетч ждёт первый импульс.
Захватывает текущее время и считает импульсы, пока время меньше 3 сек.
Через 3 сек проверяет сколько импульсов пришло.
Если пришло 10 импульсов - мигает 14 раз.
Если пришло 20 импульсов - мигает 10 раз.

помогите в скетче пожалуйста друзья

Где ЭТО в коде ???

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму