#1 2016-06-24 14:40:26

Yury
Учасник
Зареєстрований: 2016-06-24
Повідомлень: 3

повороты на мотоцикл

Хочу сделать электрику мотоцикла полностью управляемой ардуино, я новичок в этом деле, помогите с поворотами, нужно чтобы при нажатии кнопки мигал светодиод (к примеру) пока не будет нажата кнопка еще раз, сложность (для меня) в том что код большой, много функций, и нужно чтобы одно не мешало другому, то есть один большой скетч, из множества маленьких (независимых)
если кому не сложно, киньте пример как это можно сделать....

Неактивний

#2 2016-06-24 15:30:01

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: повороты на мотоцикл

#define LED  13 
#define BUTTON 2 
int val = 0;     
int old_val = 0; 
int state = 0;   

void setup()
{
  pinMode(LED, OUTPUT);   
  pinMode(BUTTON, INPUT);   
}
void loop()
{
  val = digitalRead(BUTTON);
  if ((val == HIGH) && (old_val == LOW))
  {
    state = 1 - state;
  }
  old_val = val; 
  if (state == 1)
  {
    digitalWrite(LED, millis()%2000 < 100);
  }
  else
  {
    digitalWrite(LED, LOW);
  }
}

Неактивний

#3 2016-06-24 15:31:39

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: повороты на мотоцикл

ну и прицепить ещё борьбу с дребезгом контактов

Неактивний

#4 2016-06-24 20:37:21

Yury
Учасник
Зареєстрований: 2016-06-24
Повідомлень: 3

Re: повороты на мотоцикл

спасибо, буду пробовать

Неактивний

#5 2016-06-24 21:36:49

lkj
Учасник
Зареєстрований: 2016-02-03
Повідомлень: 104

Re: повороты на мотоцикл

Сделайте несколько независимых устройств, arduino  будет контролером.
К примеру,  для поворотов можно применить мультивибратор.

Неактивний

#6 2016-06-25 11:23:14

Yury
Учасник
Зареєстрований: 2016-06-24
Повідомлень: 3

Re: повороты на мотоцикл

vvr пише:

#define LED  13 
#define BUTTON 2 
int val = 0;     
int old_val = 0; 
int state = 0;   

void setup()
{
  pinMode(LED, OUTPUT);   
  pinMode(BUTTON, INPUT);   
}
void loop()
{
  val = digitalRead(BUTTON);
  if ((val == HIGH) && (old_val == LOW))
  {
    state = 1 - state;
  }
  old_val = val; 
  if (state == 1)
  {
    digitalWrite(LED, millis()%2000 < 100);
  }
  else
  {
    digitalWrite(LED, LOW);
  }
}

тут при нажатии и удерживании мигает а при отпускании гаснет, а как сделать чтобы при одном нажатии мигало, а при повторном нажатии гасло? что-то не могу разобраться(

Неактивний

#7 2016-06-25 16:11:45

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: повороты на мотоцикл

какое удержание ?

Неактивний

#8 2016-08-20 16:19:22

Stoyn11
Гість

Re: повороты на мотоцикл

Вот только не могу понять чем вам реле поворотов не помогает - просто поменяли лампочку на ленту и делов то!

#9 2016-12-01 17:43:13

Grey7604
Учасник
Зареєстрований: 2016-10-17
Повідомлень: 7

Re: повороты на мотоцикл

Здравствуйте у меня такой вопрос: как запрограмировать этот скетч на два канала,  то есть две кнопки два светодиода.

Неактивний

#10 2016-12-04 23:54:02

Panzerfunker
Учасник
Зареєстрований: 2016-10-28
Повідомлень: 13

Re: повороты на мотоцикл

int switchPin1 = 11;
int ledPin1 = 12;
int switchPin2 = 8;
int ledPin2 = 9;

boolean lastButton1 = LOW;
boolean ledOn1 = false;
boolean currentButton1 = LOW;

boolean lastButton2 = LOW;
boolean ledOn2 = false;
boolean currentButton2 = LOW;

//----------------------------------------

void setup()
{
  pinMode(switchPin1, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(switchPin2, INPUT);
  pinMode(ledPin2, OUTPUT);
}

//----------------------------------------

boolean debounce(boolean last , int switchP)

{
boolean current = digitalRead(switchP);
  if (last != current)
  {
    delay(5);
    current = digitalRead(switchP);
  }
return current;
}

//--------------------------------------------

void loop()

{
currentButton1 = debounce(lastButton1, switchPin1);
currentButton2 = debounce(lastButton2, switchPin2);

  if (lastButton1 == LOW && currentButton1 == HIGH) ledOn1 = !ledOn1;
  if (lastButton2 == LOW && currentButton2 == HIGH) ledOn2 = !ledOn2;
 
lastButton1 = currentButton1;
lastButton2 = currentButton2;
digitalWrite(ledPin1, ledOn1);
digitalWrite(ledPin2, ledOn2);
}

Неактивний

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

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

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