Почему моя схема работает только тогда, когда я не использую последовательный порт?
Я новичок в работе с Arduino (и схемами в целом), поэтому, когда мне поручили создать простую кнопочную схему для управления состоянием светодиода и отправки сообщения обратно с помощью Serial.println( )
, чтобы показать, что кнопка была нажата, я заметил, что светодиод тускло горит, когда я нажимаю кнопку, чтобы включить ее. Однако, когда я вообще не использую последовательный порт в своем коде, он работает идеально, как и ожидалось.
Мой код:
const int ledPort = 8;
const int detPort = 7;
void setup() {
pinMode(ledPort, OUTPUT);
pinMode(detPort, INPUT);
digitalWrite(ledPort, HIGH);
Serial.begin(9600);
}
void loop() {
if (digitalRead(detPort) == HIGH) {
digitalWrite(ledPort, LOW);
Serial.println("9");
delay(500);
}
else {
digitalWrite(ledPort, HIGH);
Моя схема:
https://imgur.com/a/evP1O40
Моя плата: MEGA2560
@Guest919, 👍-1
Обсуждение2 ответа
Лучший ответ:
Ваша цепь подключена неправильно.
Вам будет проще просто следовать этому официальному руководству, которое покажет вам, как использовать кнопку для включения светодиода. Даже если у вас есть мега, он вам подойдет.
Там вы увидите упрощенное изображение проводки:
Кроме того, там есть правильный код:
/* Базовое цифровое чтение
* ------------------
*
* включает и выключает светодиод (LED), подключенный к цифровому
* контакт 13, при нажатии кнопки, прикрепленной к контакту 7. Он иллюстрирует
* концепция Active-Low, заключающаяся в соединении кнопок с помощью
* Подтягивающий резистор от 1 кОм до 10 кОм.
*
* Создано 1 декабря 2005 г.
* авторское лево 2005 DojoDave <http://www.0j0.org>
* http://arduino.berlios.de
*
*/
int ledPin = 13; // выбираем пин для светодиода
int inPin = 7; // выбираем входной пин (для кнопки)
int val = 0; // переменная для чтения состояния пина
void setup() {
pinMode(ledPin, OUTPUT); // объявляем светодиод как выход
pinMode(inPin, INPUT); // объявляем кнопку как вход
}
void loop(){
val = digitalRead(inPin); // чтение входного значения
if (val == HIGH) { // проверяем, является ли вход ВЫСОКИМ (кнопка отпущена)
digitalWrite(ledPin, LOW); // выключаем светодиод
} else {
digitalWrite(ledPin, HIGH); // включить светодиод
}
}
Схема очень важна
Кроме того, когда вы пытаетесь посмотреть на картинку и построить схему, вы обнаружите, как трудно увидеть, как все взаимосвязано.
Это поможет вам понять, насколько важной может быть простая схема.
Я попытался превратить изображение с сайта Arduino в схему, и моя интерпретация может быть неправильной, или фактическая схема, построенная на сайте Arduino, может быть неправильной. Если у кого-то есть замечания, я приму их во внимание.
Попытка построить схему на основе изображения ужасно сложна, как и попытка отладки схемы на основе изображения. Вот почему, когда вы отправляете вопрос, вы должны представить нарисованную схему того, как вы его подключили.
Последовательного резистора для светодиода нет..., @Sim Son
@SimSon Да, немного странно, что схема с сайта Arduino не добавляет ее. Это потому, что они просто вставили один контакт светодиода в GND, а другой — в PIN13 на разъеме Arduino., @raddevus
Ага, понятно. Они используют зеленый / синий светодиод, так что в этом случае это может быть хорошо. Не твоя вина..., @Sim Son
Ваша схема мне тоже непонятна :) Я не вижу, в частности, откуда светодиод получает заземление.
Попробуйте начать со схемы, показанной здесь, и сообщите об этом!
Удачи!
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
Ваша схема не имеет никакого смысла. Можете ли вы нарисовать, как все это на самом деле связано вместе, на правильной схеме, а не на фотографиях, на которых трудно увидеть, что и куда?, @Majenko
Пожалуйста, [отредактируйте] свой вопрос, чтобы изображение было видно без необходимости переходить по ссылке., @the busybee