Я не раз встречал в сети описание этой забавной электронной игрушки. Это устройство легко сделать на основе arduino.
Помимо arduino понадобится пара модулей схемы которых приведены на рисунке.
Для устройства удобнее использовать двухцветный светодиод (красный/зеленый). На рисунке показано подключение по схеме с общим катодом.
Можно использовать покупные модули.
Кнопка:
Эта кнопочка подключается к ардуино согласно нижеуказанным инструкциям.
Key --- Arduino Uno
VCC --- 5V
SW1 --- IO8
GND --- GND
Светодиод (RGB):
У этого светодиодного модуля общим является анод. Подключается к ардуино согласно нижеуказанным инструкциям.
LED RGB --- Arduino Uno
V --- 5V
R --- IO9
B --- NC
G --- IO10
Только светодиодик у модуля слишком яркий. Долго смотреть на него невозможно. Поэтому я сделал свою версию по схеме приведенной в начале статьи.
Полностью собранное устройство может выглядеть так.
Работает это устройство следующим образом. Светодиод попеременно мигает зеленым и красным светом. Мигания должны быть заметны, но частота должна быть достаточно велика. Если задать вопрос и нажать на кнопку, то подсознание различит какой свет у светодиода и пошлет сигнал мышцам на сокращение. Когда кнопочка будет нажата, светодиод будет либо зеленым (положительный ответ), либо красным (отрицательный ответ). Осознанное управление невозможно из-за высокой частоты мигания светодиода. Это в теории :-)
Программа для любой платки ардуино.
Программа для Arduino Uno.
В последней программе используется непосредственная работа с портом B микроконтроллера.
Помимо arduino понадобится пара модулей схемы которых приведены на рисунке.
Для устройства удобнее использовать двухцветный светодиод (красный/зеленый). На рисунке показано подключение по схеме с общим катодом.
Можно использовать покупные модули.
Кнопка:
Эта кнопочка подключается к ардуино согласно нижеуказанным инструкциям.
Key --- Arduino Uno
VCC --- 5V
SW1 --- IO8
GND --- GND
Светодиод (RGB):
У этого светодиодного модуля общим является анод. Подключается к ардуино согласно нижеуказанным инструкциям.
LED RGB --- Arduino Uno
V --- 5V
R --- IO9
B --- NC
G --- IO10
Только светодиодик у модуля слишком яркий. Долго смотреть на него невозможно. Поэтому я сделал свою версию по схеме приведенной в начале статьи.
Полностью собранное устройство может выглядеть так.
Работает это устройство следующим образом. Светодиод попеременно мигает зеленым и красным светом. Мигания должны быть заметны, но частота должна быть достаточно велика. Если задать вопрос и нажать на кнопку, то подсознание различит какой свет у светодиода и пошлет сигнал мышцам на сокращение. Когда кнопочка будет нажата, светодиод будет либо зеленым (положительный ответ), либо красным (отрицательный ответ). Осознанное управление невозможно из-за высокой частоты мигания светодиода. Это в теории :-)
Программа для любой платки ардуино.
//////////////////////// // // Arduino UNO // //////////////////////// // // Sketch: subconscious // const unsigned char BUTTON = 8; const unsigned char LED_R = 9; const unsigned char LED_G = 10; unsigned char f = 0; void setup() { pinMode(BUTTON, INPUT); pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); } void loop() { if ( f == 0 ) { digitalWrite(LED_R, LOW); digitalWrite(LED_G, HIGH); f = 1; } else { digitalWrite(LED_R, HIGH); digitalWrite(LED_G, LOW); f = 0; } do { delay(50); } while ( digitalRead(BUTTON) == LOW ); } // // End // ////////////////////////
Программа для Arduino Uno.
//////////////////////// // // Arduino UNO // //////////////////////// // // Sketch: subconscious // // Arduino ATmega328 // // IO13 --- Port B Pin 5 // IO12 --- Port B Pin 4 // IO11 --- Port B Pin 3 // IO10 --- Port B Pin 2 // IO9 --- Port B Pin 1 // IO8 --- Port B Pin 0 // // IO7 --- Port D Pin 7 // IO6 --- Port D Pin 6 // IO5 --- Port D Pin 5 // IO4 --- Port D Pin 4 // IO3 --- Port D Pin 3 // IO2 --- Port D Pin 2 // IO1 --- Port D Pin 1 // IO0 --- Port D Pin 0 // // AD5 --- Port C Pin 6 // AD4 --- Port C Pin 4 // AD3 --- Port C Pin 3 // AD2 --- Port C Pin 2 // AD1 --- Port C Pin 1 // AD0 --- Port C Pin 0 void setup() { DDRB = 0b00000110; PORTB = 0b00000100; } void loop() { PORTB ^= 0b00000110; do { delay(50); } while ( !(PINB & (1 << 0)) ); } // // End // ////////////////////////
В последней программе используется непосредственная работа с портом B микроконтроллера.
Комментариев нет:
Отправить комментарий