Я не раз встречал в сети описание этой забавной электронной игрушки. Это устройство легко сделать на основе 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 микроконтроллера.



Комментариев нет:
Отправить комментарий