В настоящее время я работаю над проектом, где мне нужно считывать импульсы из Arduino и проверять, является ли результат высоким или низким.Генерация и считывание импульсов на arduino
Я должен был написать свой собственный код для генерации высокого/низкого выхода из Arduino:
//Pulse Generator Arduino Code
int potPin = 2; // select the input pin for the knob
int outputPin = 13; // select the pin for the output
float val = 0; // variable to store the value coming from the sensor
void setup() {
pinMode(outputPin, OUTPUT); // declare the outputPin as an OUTPUT
Serial.begin(9600);
}
void loop() {
val = analogRead(potPin); // read the value from the k
val = val/1024;
digitalWrite(outputPin, HIGH); // sets the output HIGH
delay(val*1000);
digitalWrite(outputPin, LOW); // sets the output LOW
delay(val*1000);
}
Он использует регулятор для изменения задержки между импульсами.
Im в настоящее время пытается прочитать высокие/низкие данные с другим Arduino (Назовём этот «граф Arduino»), просто подключив 2 с кабелем от „outputPin“ к порту на счет Arduino.
Я использую digitalRead для чтения порта без каких-либо задержек.
//Count Arduino Code
int sensorPin = 22;
int sensorState = 0;
void setup() {
pinMode(sensorPin, INPUT);
Serial.begin(9600);
}
void loop(){
sensorState = digitalRead(sensorPin);
Serial.println(sensorState);
}
Сначала он пытался импульсом каждые 1 секунду, но результатом стал спам тонны минимумов и максимумов. Всегда 3 минимума и 3 максимума и повторение. Это не было даже близко к одному каждые 1 секунду, но больше, чем 1 раз в 1 миллисекунду.
Я не могу понять, что я делаю неправильно. Это вопрос времени или есть лучший способ обнаружить эти изменения?
Вопрос в вашем последнем предложении: «есть ли лучший способ обнаружить эти изменения?» Да, обнаруживая изменения, не сообщая уровень, как вы, кажется, делаете, хотя вы не даете много подсказок. Ваш непрерывный последовательный выход состояния датчика будет разрушать предполагаемую синхронизацию входного состояния. –
Если вы передаете «0», когда входной сигнал становится низким, а «1», когда он высок, при 9600 бодах вы должны отслеживать входной импульс до примерно 1 кГц. –
Я должен отслеживать около 10 импульсов каждую секунду. Так что 10 Герц уже будет здорово. Является ли решение на основе прерываний вариантом для Arduino. Могу ли я получить прерывание, если контакт изменится с высокого на низкий? –