управление с клавиатуры
- Войдите на сайт для отправки комментариев
Вс, 17/06/2012 - 12:51
Здрасти ...помогите плиз разобратся мне нубу с управлением с клавиатуры того же самого светодиода.... с цыфрами я разобрался но если вдруг задача с букв клавиатуры управлять ?? не пойму как это делать ?
например D-светодиод загорелся, а F-выключился
А клавиатура у вас куда подключена? Скейтч ваш можно посмотреть?
да простое подключение по сериал порту (клава от компа)
Так не бывает. Еще раз спрашиваю как и куда подключена клавиатура???? И где ваш скейтч????
да простое подключение по сериал порту (клава от компа)
А эта фраза может означать, что влавиатура подключена к дуине двумя проводами к 0(RX) и GND. НО я не встречал UART клавиатур с TTL уровнями от компа.
Выложите хотябы скейтч, по нему будет ясно как у вас подключена клавиатура....
int ledPin=13; void setup() { Serial.begin(9600); pinMode (ledPin, OUTPUT); } void loop(){ while (Serial.available() == 0); int val=Serial.read() - '0'; if (val==1) //заменить на букву { Serial.println("ON"); digitalWrite(ledPin, HIGH); } if (val == 0) //заменить на букву { Serial.println("OFF"); digitalWrite(ledPin, LOW); } }Клавиатура у вас подключена к компу и вы просто отсылаете символы в сериал порт. У вас этот код работает?
да именно так ! да работает
Да, вижу, работает, только из-за того что в конце 11 строки стоят ; от этой стрроки нет никакого толку, чтение из порта происходит постоянно.
int ledPin=13; void setup() { Serial.begin(9600); pinMode (ledPin, OUTPUT); } void loop(){ while (Serial.available()){ int val=Serial.read() - '0'; if (val == 1) //заменить на букву { Serial.println("ON"); digitalWrite(ledPin, HIGH); } if (val == 0) //заменить на букву { Serial.println("OFF"); digitalWrite(ledPin, LOW); } } }А что бы включать и выключать светодиод в зависимости от символа код будет еще проще, нужно то что вы прочитали из порта сохранить в переменную char и после просто сравнивать эту переменную с условием:
int ledPin=13; void setup() { Serial.begin(9600); pinMode (ledPin, OUTPUT); } void loop(){ while (Serial.available()){ char val = Serial.read(); if (val == 'D') { Serial.println("ON"); digitalWrite(ledPin, HIGH); } if (val == 'F') { Serial.println("OFF"); digitalWrite(ledPin, LOW); } } }Да и не забывайте что D и F в данном случае должны быть заглавными. И я еще не обратил внимания, что while (Serial.available() == 0); так что я подредактировал предыдущие примеры.
maksim спасибо большое ! только начал разбиратся с ардуино ....
И в общем использовать такой способ while (Serial.available() == 0){} не совсем правильно, так как в этом случае у вас программа будет крутиться в замкнутом цикле пока что-нибудь не прийдет в порт и вы не сможете занять МК другими делами...
а вот еще вопрос возник ! включать и выключать светодиод с одной клавиши ? допустим с 'D' ?
Как то так
#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); } } }Здравствуйте! Нужна помощ с управление платформы с клавиатуры. то есть так: ардуино управляет двигателями через драйвер, на ардуино посылаю с компьютера через блутуз цифры (например 1 правый колесо назад). Все работает, даже прогу в визул бейсике сделал с кнопками. Но управлять не удобно. Задача при нажатой клавише допустим 1 платворма ехала при отпускании она останавливалась. скетч:
Добрый день !
Помогите пожалуйста.
Нужен код для управления реле клавишами W.S.A.D. , но ,что-бы релюшки срабатывали только пока держишь кнопку...