Uno+прерывания+я новичек
- Войдите на сайт для отправки комментариев
Пнд, 06/10/2014 - 09:55
Добрый день!
Для управления выключателями света по 433 приобрел Arduion Uno + приемник/передатчик по 433.
Что-то не работает, а что именно не понимаю. Подключают от приемника gnd->к gnd, vcc->3.3v, data->analog 0
И вот такая програмка:
#define rfReceivePin A0 //RF Receiver pin = Analog pin 0
#define ledPin 13 //Onboard LED = digital pin 13
unsigned int data = 0; // variable used to store received data
const unsigned int upperThreshold = 70; //upper threshold value
const unsigned int lowerThreshold = 50; //lower threshold value
void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
data=analogRead(rfReceivePin); //listen for data on Analog pin 0
if(data>upperThreshold){
digitalWrite(ledPin, LOW); //If a LOW signal is received, turn LED OFF
Serial.println(data);
}
if(data<lowerThreshold){
digitalWrite(ledPin, HIGH); //If a HIGH signal is received, turn LED ON
Serial.println(data);
}
}
Когда нажимаю кнопки на пульте, все работает.
Далее, пытаюсь реализовать через прерывания
int pin = 13;
volatile int state = LOW;
void setup()
{
Serial.begin(9600);
pinMode(pin, OUTPUT);
Serial.println("Hi");
attachInterrupt(0, blink, CHANGE);
Serial.println("Hello world");
}
void loop()
{
digitalWrite(pin, state);
}
void blink()
{
Serial.println("1");
state = !state;
}
Подключаю gnd->к gnd, vcc->3.3v, data->digital 2
И ничего не получаю, ни вывода в монитор ни диодморгания. В чем проблема, что не так?
http://arduino.ru/Reference/AttachInterrupt
Дык у тебя на D2 сыпится куча импульсов, которые порождают аж по два прерывания каждый (attachInterrupt(0, blink, CHANGE)), и по каждому импульсу происходит state = !state два раза. Что в итоге получается?
а в сериал разве можно посылать внутри прерывания?
попробовал так
attachInterrupt(0, blink, CHANGE); надо или RISING или FALLING вместо CHANGE, смотря что на пине без сигнала
attachInterrupt(0, blink, CHANGE); надо или RISING или FALLING вместо CHANGE, смотря что на пине без сигнала
попробовал, тишина, ощущение что вообще ничего не поступает? есть даже сомнение что не туда провод подключил или может какие-то настройки надо для этого d2 делать
вопросы. почему 3.3В а не 5?
ты уверен что на входной пин не нужна подтяжка?
если что нужно подключать на 2 пин а не 0. пишется 0 потому что прерывание 0
изза того что нет задержки никакой, delay использовать нельзя. если постоянно будет на входе дергаться сигнал с такой же скоростью будет моргать светодиод. и это просто можешь не заметить
Нужно его на ввод в setup переключить.
Вот мои потуги:
D3 через оптопару соединялся с землей. Оптопара рулилась с другой ардуины.
Раз в секунду выводится на экран количество срабатываний.
Считал задние фронты импульсов, потому и RISING.
вопросы. почему 3.3В а не 5?
В интернете где то нашел схему с программой там было под 3.3в )
Переключил на 5 и все работает, спасибо!
хорошо)