#1 2015-09-08 01:47:20

Mamaley
Учасник
Зареєстрований: 2015-09-08
Повідомлень: 1

Нужна помощь в управлении клавишами !

Народ ! Есть такая задача, управлять платой релюшек с помощью комповой клавиатуры, а точнее 4мя кнопками, но вот в чем проблема...
Есть код, который управляет релюшками, но только как включатель или выключатель, а проблема в том, что нужно что-бы реле было замкнуто только пока зажата клавиша на компе, а при отпускании реле должно выключаться !
   К сожалению я полный нуб в программировании и буду очень признателен за простой ответ, а если бы кто-то код дал, то я вааще расцелую !)))   

Вот код для простого вкл., выкл оной кнопкой ....


#define ledPin 13
bool state = 0;

void setup()
{               
  Serial.begin(9600);
  pinMode (ledPin, OUTPUT);
}

void loop()
{
  while(Serial.available())
  {
    char val = Serial.read();
   
    if (val == 'd') state = !state;
   
    if(state)
    {
      Serial.println("ON");
      digitalWrite(ledPin, HIGH);
    }
    else
    {
      Serial.println("OFF");
      digitalWrite(ledPin, LOW);
    }
  }
}

Неактивний

#2 2015-09-10 11:22:53

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Нужна помощь в управлении клавишами !

вам нужна внешняя программа которая отслеживала бы  нажатие клавиш и передавала управляющие команды для ардуино,
вар1
типа R0\r\n -  relay 0 - off 
типа R1\r\n -  relay 0 - on
вар2
00000\r\n  - все выключенные
11111\r\n  - все включенны
вар3 и вероятно наиболее оптимальный  если не будет других фунций
этот вариант может работать и сейчас
0 - все выключены
3 - включены только 0,1
F = 0b1111  включены  все

т.е. передавать только   события
нужно эхо - контролировать факт переключения,  если какой сбой повторно повторить команду.

Неактивний

#3 2015-09-10 11:37:18

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Нужна помощь в управлении клавишами !

void set_relay ( int mask )
{
 
if ( (mask & 0x01) == 0x01 ) digitalWrite(Relay0, HIGH); else digitalWrite(Relay0, LOW); 
if ( (mask & 0x02) == 0x02 ) digitalWrite(Relay1, HIGH); else digitalWrite(Relay1, LOW); 
if ( (mask & 0x04) == 0x04 ) digitalWrite(Relay2, HIGH); else digitalWrite(Relay2, LOW); 
if ( (mask & 0x08) == 0x08 ) digitalWrite(Relay3, HIGH); else digitalWrite(Relay3, LOW); 
}	  
	

ваш код
	//------------------------------------------
	
	char val = Serial.read();
    
	
	switch ( val )
	{
	case '0':  
	case '1':  
	case '2':  
	case '3':  
	case '4':  
	case '5':  
	case '6':  
	case '7':  
	case '8':  
	case '9':  
	case 'A':  
	case 'B':  
	case 'C':  
	case 'D':  
	case 'E':  
	case 'F':  
    	set_relay (val - '0');
		break;
	
	default:
	//  error command
	break;
	
	}
	

Неактивний

#4 2015-09-16 14:58:14

freeman
Учасник
З  Киев
Зареєстрований: 2014-09-16
Повідомлень: 82

Re: Нужна помощь в управлении клавишами !

Простенький код на том же python, который будет следить за клавишами и писать имя клавиши в serial, ардуиной читай serial и включай выключай реле в зависимости от того, что пришло в порт.

Неактивний

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

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

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