Ви не увійшли.
Всем спасибо, в Proteus всё заработало как надо...
Финальный код:
const int relayPin = 0;
const int onPin = 1;
const int offPin = 2;
int relayState = 0;
int lastRelayState = 0;
void setup() {
pinMode(relayPin, INPUT);
pinMode(onPin, OUTPUT);
pinMode(offPin, OUTPUT);
}
void loop() {
relayState = digitalRead(relayPin);
if (relayState != lastRelayState) {
if (relayState == HIGH) {
digitalWrite(onPin, HIGH);
delay (1500);
digitalWrite(onPin, LOW);
} else {
digitalWrite(offPin, HIGH);
delay (1500);
digitalWrite(offPin, LOW);
}
}
lastRelayState = relayState ;
}
Спасибо, что навели на мысль...
Идея понята правильно, а на мелкие косяки укажет компилятор.
Удачи!
Сигнал будет постоянньім - или есть или нет... Програмка должна следить за состояние сигнала на входному пине, и менять состояние вьіходньіх пинов (иипульсом) в зависимости от входа.
А сколько будет подаваться с реле сигнал ?
Так должно работать, доберусь до proteus'a, проверю:
const int relayPin = 1;
const int onPin = 2;
const int offPin = 3;
int = 0;
int lastRelayState = 0;
void setup() {
pinMode(relayPin, INPUT);
pinMode(onPin, OUTPUT);
pinMode(offPin, OUTPUT);
}
void loop() {
relayState = digitalRead(relayPin);
if (relayState != lastRelayState){
if (relayState == HIGH) {
digitalWrite(onPin, HIGH);
delay (1500);
digitalWrite(onPin, LOW);
} else {
digitalWrite(offPin, HIGH);
delay (1500);
digitalWrite(offPin, LOW); } }
lastRelayState = relayState
}
Следует добавить ещё одну переменную, в которой запоминать текущее состояние relayPin.
Импульс формировать только тогда, когда значение relayPin изменилось.
Привет, пишу тут маленькую програмку для arduino digispark. Суть такая: при подаче на PB0 постоянного напряжения 5В (5В подаеться через контакты реле), на выходе PB1 должен появиться импульс 5В длительностю 1,5 сек (через транзисторный ключ и реле управляю актуатором от центрального замка - замок должен закрытьса ); при переключении PB0 на низкий уровень (размыкании реле и подтяжка к земле через 10к) на на выходе PB2 должен появиться импульс 5В длительностю 1,5 сек. (через транзисторный ключ и реле - замок должен открытьса).
Схемка в Proteus и код в архиве...
sketch_blink.rar
const int relayPin = 1;
const int onPin = 2;
const int offPin = 3;
int relayState = 0;
void setup() {
// put your setup code here, to run once:
pinMode(relayPin, INPUT);
pinMode(onPin, OUTPUT);
pinMode(offPin, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
relayState = digitalRead (relayPin);
if (relayState == HIGH) {
digitalWrite(onPin, HIGH);
delay (1500);
digitalWrite(onPin, LOW);
} else {
digitalWrite(offPin, HIGH);
delay (1500);
digitalWrite(offPin, LOW);
}
}