помогите с arduino Due
- Войдите на сайт для отправки комментариев
Пнд, 28/07/2014 - 04:59
Arduino Due програмируется на мигание светодиодом на 13 порту, програмируется на включение диода от кнопки и погасание его когда отжимаешь кнопку а вот включить и отключить тот же св.диод при повторном нажатии не програмируется диод горит в самом начале при подключенной кнопке через землю
Вот программа :
int LedPin = 13; // Подключаем светодиод к порту 13
int ButPin = 10; // Подключаем кнопку к выходу 10
int flag = 0; // флаг состояния
void setup()
{
pinMode(LedPin, OUTPUT); // �нициализируем порт "ledPin" как выходной
}
void loop()
{
if(digitalRead(ButPin) == HIGH && flag == 0)
{
digitalWrite(LedPin, !digitalRead(LedPin));
flag = 1;
}
if(digitalRead(ButPin) == LOW && flag == 1)
{
flag = 0;
}
}
Что не так я сделал ?
ButPin надо сконфигурировать на вход
непомагает пробовал, насколько знаю цифровые входы все заточены на вход по умочанию и можно не ставить, могу ошибаться конечно
Кнопку на минус теперь вешайте.
все тоже самое-(
подключил чтобы при нажимании был логический ноль на 10 порту и закаратил на 5v через резистор не помогло ........ он горит и не потухает вабще жмеш или не жмеш на кнопку
Добавте после
Serial.println("toggled"); (Ну и setup, естественно сериал проинициализируйте).
Если на одно нажатие кнопки, будете в Serial Monitor видеть кучу надписеь "toggled" - добавте скажем delay(100) в конце loop().
А вообще, можете почитать тему про кнопки. Прикрепленную.
И обычно, когда решают какую-то проблему, то подключение описывают (а еще лучше - схемку рисуют).
Я как-то не понял, как вы умудрились из вечного while вылезти? Программа тупая, как пробка (вообще-то так программировать нельзя, но если очень хочется, то можно :)).
Как работает программа:
Жмёте кнопку
Земля попадает на вход ардуины
Эта земля вызывает срабатывание строки if(digitalRead(ButPin) == LOW) "если НОЛЬ поменять значение на выходе LedPin на обратное. 1 на 0, а 0 на 1.
Затем включается while(digitalRead(ButPin) == LOW);, она работает так "ПОКА ТЫ НЕ ОТПУСТИШЬ КНОПКУ Я БУДУ СТОЯТ И ТУПИТЬ"
Тут сказочке конец и начались суровые будни, которые как бы говорят нам - раз такая простая программа не работает, значит дело не в бобине, а в схеме подключения всей красоты к ардуине.
Красиво разместите ардуину на листе бумаги, подключите все деталюшки, сделайте фото натюрморта телефоном, или чем другим, выложите в инет куда хотите, и ссылку принесите сюда. Мы посмотрим и, возможно, найдём проблему.
Мне про натюрморт нравиться. Можно еще красиво разместить запотевшую бутылочку. Сальце нарезаное тоненько с лучком. Огурки.
Вот, поменял немного, добавил delay(100);. Таким делэем можно слона убить, так что если и теперь не заработает, то косяк в другом.
Я, кстати, не понял, что вы резистором закоротили? Схема должна выглядеть так:
Я, кстати, не понял, что вы резистором закоротили? Схема должна выглядеть так:
красиво. Ждем новых перлов.
Я, кстати, не понял, что вы резистором закоротили? Схема должна выглядеть так:
Чочочо? Из мене ничо не перло, я за этим строго слежу! Я человек высокой культуры и пугающей сознательности. Потому желаю, чтобы все!
Чочочо? Из мене ничо не перло, я за этим строго слежу! Я человек высокой культуры и пугающей сознательности. Потому желаю, чтобы все!
Не уследили.... резистор "не в тему" из вас таки вылез. Во первых без него можно обойтись: использовать внутренний (вообщем-то для того и подключают кнопку к земле, что-бы внутрений использовать можно было). Во вторых, если уж ставить внешний (тоже не ошибка), то уж точно не так. Это же не светодиод где нам ток нужно ограничивать.... вообщем "айда читать тему про кнопки" (или любую статью про то как правильно подключать кнопку к ардуине).
Да и выше "Я как-то не понял, как вы умудрились из вечного while вылезти?" перлы выползали.
Кто вам сказал что он из вечного while вышел? Почему вы решили что описанные проблемы только выходом из while могут быть вызываны? Лично я могу еще две причины вообразить. И обе будут пакостить внутри вечного while.
А какая из них в данном случае - мне лень гадать. По крайней мере до тех пор, пока топик стартер, сам не потрудиться нарисовать по какой же схеме он подключает и не сдалает диагностику с помощью Serial.println.
А может тоже, вместе с вами, почитает тему про кнопки и сам найдет причину...
https://yadi.sk/i/S3hd2s-gYHui6
ВОТ Я ПОДКЛЮЧИЛ ПО :
byte
LedPin = 13;
byte
ButPin = 10;
void
setup
()
{
pinMode(LedPin, OUTPUT);
pinMode(ButPin, INPUT_PULLUP);
}
void
loop
()
{
if
(digitalRead(ButPin) == LOW)
{
delay(100);
digitalWrite(LedPin, !digitalRead(LedPin));
while
(digitalRead(ButPin) == LOW);
// эту строку можно заменить на delay(100);
}
}
горит в самом начале и не реагирует на кнопку......
Ну, а serial.println где? Как мы узнаем заходит оно в if вообще или нет? Как мы поймем проблема у нас с led-дом или кнопкой?
А вот тут мы вас и поправим... Резистор им не в тему, а?! Человек непойми чего непойми куда непойми как подключает, а им защитный резистор не в тему. Думать надо глубже, а на вещи смотреть ширше.
А вот тут мы вас и поправим... Резистор им не в тему, а?!
Да и не в тему (особенно в свете его последнего скетча, где INPUT_PULLUP появился, значит все-таки "почитал про кнопки) и неправильно.
Человек непойми чего непойми куда непойми как подключает, а им защитный резистор не в тему. Думать надо глубже, а на вещи смотреть ширше.
Да с человеком-то все понятно. Ему уже рассказали куда двигаться, что схему бы дать и т.д.
А тут "ваш косяк". Так что "человек", к вашим словам - ну никакого отношения не имеет.
P.S. Или вы хотели рассказать что резистор тут от ошибочного включения на OUTPUT? Ну тогда, простите но нужно было упоминать "схема для параноиков". И рассказать зачем он там. Все-таки это далеко не "традиционная схема включения". И, кстати, проблеме топик-стартера - никакого отношения не имеющая. Это "другая история".
Вы конечно все молодцы пишете попровляете друг друг ) даете в пример свои программы. Но прикол вы говорите почитайте тему кнопки но посмотрите на мой первый скетч он оттуда с той темы и кнопка подключена у меня была так как там описано ! А теперь вопрос : почему не работает ?
А прикол в том что никто, кроме вас об этом не знает. Вы что думаете, мы количеству гласных и согласных букв в вашем письме умеем такие вещи отгадывать? Или вы думаете что "подключил не туда" это редкая причина проблем?
Не, ну вот точно вам на форум астрологов нужно. Почему не работает? Да потому что "что-то не так". Подходит такой ответ? Не нравится? А ведь он "на уровне" вашего вопроса.
Что не так? Да десятки причин могут быть. И их нужно "перебирать". Последовательно, по одному. И никто, за вас - этого не сделает. Максимум что мы можем - подсказать, гадать, выдвигать версии. Проверять - это ваша забота. И давать сюда "картинку описание". Максимально подробную. Может быть, по каким-то признакам кто-то и догадатеся "в чем проблема".
А может и нет. Всякое бывает.
Я вот два раза уже сказал вам "сделайте Serial.println" скажите то в мониторе видно. Сделали? А "причину проблемы" хотите. А я ведь даже сказал "зачем это нужно". Что-бы понять "кто у нас дурагонить", кнопка или светик. Или я должен быть свой хрустальный шар достать? Или вы думаете я могу, сидя у себя добавить туда Serial.println? Думаете что после этого вам сразу скажут "что поправить"? Неа.... следующую проверку предложат. Так, шаг за шагом и ищут причину. Отсекая пути....
А вот тут мы вас и поправим... Резистор им не в тему, а?!
Да и не в тему (особенно в свете его последнего скетча, где INPUT_PULLUP появился, значит все-таки "почитал про кнопки) и неправильно.
Человек непойми чего непойми куда непойми как подключает, а им защитный резистор не в тему. Думать надо глубже, а на вещи смотреть ширше.
Да с человеком-то все понятно. Ему уже рассказали куда двигаться, что схему бы дать и т.д.
А тут "ваш косяк". Так что "человек", к вашим словам - ну никакого отношения не имеет.
P.S. Или вы хотели рассказать что резистор тут от ошибочного включения на OUTPUT? Ну тогда, простите но нужно было упоминать "схема для параноиков". И рассказать зачем он там. Все-таки это далеко не "традиционная схема включения". И, кстати, проблеме топик-стартера - никакого отношения не имеющая. Это "другая история".
Ничего я "про кнопки" не читал. Также рассматривается вопрос "перестать читать leshaka"
Ардуина сгорела.
твоя сгорела ?)
Угу, этож у меня светодиод своевольничает.