Одновременный удар

Motrosoff
Offline
Зарегистрирован: 24.12.2015

Ребят всем привет! В общем столкнулся с такой проблемкой (я новичёк), скетч написал для того что бы при ударе по пьезику (их два), слать символы в монитор порта, символы то он шлёт только вот происходит затык, когда я одновременно сразу по двум пьезо ударяю, ни как не могу понять, что к чему и решить эту делемку. В общем сам скетч есть, в идеале если я ударю одновременно по двум сразу то в монитор должно прилетель 0 1 или 1 0, я так понял в зависемости от того, какого пьезика палец коснулся первым. Подскажите ребят......

int sensor1 = analogRead(A0);
int sensor0 = analogRead(A3);

long time0 = 0;// обьявляем переменную времени
long time1 = 0;//


void setup() {
   Serial.begin(9600); // скорость комп порта

}
void loop() {

  if ((sensor0) > 800) // цыфра это порог срабатывания пьезика
  {
     if (millis() >= (time0+30)) { // если прошло 30 милисекунд то посылаем
       Serial.print("0");
       //Serial.println(sensor0);
       time0=millis();  // засекаем время
       }
  }
 
  
  if ((sensor1) > 800) // цыфра это порог срабатывания пьезика
  {
     if (millis() >= (time1+30)) { // если прошло 30 милисекунд то посылаем
       Serial.print("1");
       //Serial.println(sensor1);
       time1=millis();  // засекаем время
       }
  }
}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

на прерываниях делай, так будет правильнее.  И прочитай тему про переполнение millis()

Sorry, код читалъ падиаганале.

nik182
Offline
Зарегистрирован: 04.05.2015

Неправильно объявлены sensor1 sensor0. В loop вместо них analogRead используйте прямо.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

херню вы написали . Потеряли флаги у аналоговых сигналов 1 и 2.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Motrosoff

1. То, что Вы написали словами, совершенно не соответствует тому, что Вы написали в скетче.

2. Вы забыли привести схему подключения.

 

Это к тому, что если бы схема подключения была правильной, то Вы вообще никогда никаких символов в Serial бы не получали (и, вероятно, быстрее бе сообразили, где ошибка). А раз получаете, то не в порядке не только скетч, но и схема (когда ошибок более одной, их намного труднее локализовать).

Еще крайне рекомендую подробно написать словами, как по Вашему мнению должен работать скетч.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Motrosoff пишет:

символы то он шлёт 

Непнятно только с какого перепугу.

А кто в loop будет сенсоры за Вас читать?

Motrosoff
Offline
Зарегистрирован: 24.12.2015

Этот код я обрезал от того кода который был. 

Motrosoff
Offline
Зарегистрирован: 24.12.2015

Дело в том что есть две стороны, левая и правая, левая передающая правая принимающая (передаётся сигнал по радиомодулю NRF24l01 и принимается тоже этим модулем, правой стороной). У каждой стороны есть по два пьезика. Левая сторона посылает либо "1" либо "0" а правая (если ударять по пьезику) в монитор порта порта посылает "2" и "3"  символы...вот только когда я пытаюсь одновременно ударить по двум разным пьезикам то в монитор ни чего не приходит или приходит но как то не уверенно....

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, это Ваша проблема. Я смотрю тот код, который Вы показали. Если предпочитаете хранить секреты, а нам показываете "фуфло для лохов", то сами себе и помогайте.

Motrosoff
Offline
Зарегистрирован: 24.12.2015

[quote=ЕвгенийП]

Ну, это Ваша проблема. Я смотрю тот код, который Вы показали. Если предпочитаете хранить секреты, а нам показываете "фуфло для лохов", то сами себе и помогайте.