Функция считывает значение с заданного входа - 1 или 0.
Пример
int ledPin = 13; // Светодиод подключенный к вход/выходу 13 int inPin = 7; // кнопка на входе 7 int val = 0; // переменная для хранения значения
void setup() { pinMode(ledPin, OUTPUT); // устанавливает режим работы - выход для 13го вход/выхода (pin) pinMode(inPin, INPUT); // устанавливает режим работы - вход для 7го вход/выхода (pin) }
void loop() { val = digitalRead(inPin); // считываем значение с входа digitalWrite(ledPin, val); // устанавливаем значение на светодиоде равным значению входа кнопки }
Это зависит от того,как ты подключил кнопку. Ты же к земле вывод подтягиваешь? Значит на входе --0,соотвественно, и на выходе получаешь 0, а светодиод ты тоже к земле подтянул.
Да всё верно, вывода у меня подтянут к земле. Теперь ясно как это работает. Порылся немного и есть вот такой пример, когда вывод тоже подтянут к земле и светодиод светится при нажатии кнопки:
Чтобы включенный светодиод не мерцал, так как это хорошо видно воочию и на мониторе порта куда подключена кнопка присутствует смесь нулей и единиц, то считывающий порт с кнопкой нужно подтянуть резистором 10 кОм к пину +5В. Тогда на мониторе порта, при нажатии кнопки, можно наблюдать "красивую" единицу, а светодиод будет светить красивым ровным светом. Код для этой схемы:
Проверка датчика влажности и температуры воздуха DHT11
Проверка датчика влажности и температуры воздуха DHT11, подключаем его согласно схеме: Чтобы на Arduino заработал датчик DTH11, сперва нужно установить для него библиотеку, скачав здесь: Затем распаковать архив в папку библиотек для Arduino: Запускаем программу и вставляем скетч:
#include "DHT.h"// подключаем библиотеку для датчика
DHT dht(2, DHT11); // сообщаем на каком порту будет датчик
void setup() {
dht.begin();// запускаем датчик DHT11
Serial.begin(9600);// подключаем монитор порта
Serial.println("DHT TEST");// пишем один раз
}
void loop() {
// считываем температуру (t) и влажность (h) каждые 250 мс
float h = dht.readHumidity();
float t = dht.readTemperature();
Замечательный модуль-джойстик, выдаёт достаточно плавные значения для промежуточного состояния. Собираем схему, вставляем скетч, загружаем код, манипулируем джойстиком, нажимаем на его центральную кнопку и смотрим на мониторе порта как меняются значения по осям координат, а на плате отключается и включается светодиод.
#define pinX A2 // ось X джойстика
#define pinY A1 // ось Y джойстика
#define swPin 2 // кнопка джойстика
#define ledPin 13 // светодиод на Pin 13
Проверяем четырёхзначный светодиодный дисплей TM1637. Схема подключения: Сперва нужно загрузить специализированную библиотеку для дисплея в самой программе Затем скаченный архив распаковать в папку libraries Приведенный ниже код выводит на дисплей символы, буквы и знаки, вкл/выкл. часовой разделитель, проверяет режимы яркости. После проверки выдаст надпись dOnE.
Выводим информацию о влажности и температуре на светодиодный дисплей
Выводим информацию о влажности и температуре на светодиодный дисплей, заодно сравниваем показания на мониторе порта:
#include "DHT.h"
// подключаем библиотеку для датчика температуры и влажности DHT11
DHT dht(2, DHT11);
// сообщаем на каком порту (на 2-ом) будет датчик температуры и влажности DHT11
#include "TM1637.h"
// подключаем библиотеку для дисплея TM1637
//0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 это подсказка, код для букв дисплея
//0~9,A,b,C,d,E,F - буквы дисплея, а выше строка это их кодовое число
#define dht_pin 2 // подключаем пин 2 для датчика температуры и влажности DHT11
#define CLK 3// подключаем пин 3, контакт CLK для дисплея TM1637
#define DIO 2// подключаем пин 2, контакт DIO для дисплея TM1637
TM1637 tm1637(CLK, DIO);// сообщаем на каких портах будет дисплей TM1637
void setup()
{
dht.begin();// запускаем датчик DHT11
Serial.begin(9600);// подключаем монитор порта
Serial.println("DHT TEST");// пишем один раз
tm1637.init();
tm1637.set(BRIGHT_TYPICAL);// устанавливаем яркость дисплея TM1637
//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7 0-7;
// - подсказка для яркости дисплея TM1637
delay(1500);// Пауза 1,5 секунды
}
void loop()
{
float h = dht.readHumidity(); // считываем влажность (h) каждые 250 мс
float t = dht.readTemperature(); // считываем температуру (t) каждые 250 мс
// выводим температуру (t) и влажность (h) на монитор порта
Serial.print("Humidity: "); // выводим надпись "Humidity: "
Serial.print(h); // выводим значение влажности после слова "Humidity: "
Serial.print(" % "); // выводим знак "%" после значения влажности, например "Humidity: 30 %"
Serial.print("Temperature: "); // выводим надпись "Temperature: "
Serial.print(t); // выводим значение влажности после слова "Temperature: "
Serial.println(" °C"); // выводим знак " °C" после значения влажности,
// например "Temperature: 24 °C"
dht.read(dht_pin);// считываем значение датчика температуры и влажности DHT11
//с пина куда он был подключен
int temp = t;// присваиваем переменной temp (температура) значение t
int humidity = h;// присваиваем переменной humidity (влажность) значение h
int digitoneT = temp / 10; // присваиваем переменной digitoneT значение
//переменной temp поделённой на 10
int digittwoT = temp % 10; // присваиваем переменной digittwoT остаток от деления
//двух чисел, например 25/10=2.5, то остаток равен 5
int digitoneH = humidity / 10; // присваиваем переменной digitoneH значение
//переменной humidity поделённой на 10
int digittwoH = humidity % 10; // присваиваем переменной digittwoH остаток от деления
//двух чисел, например 34/10=3.4, то остаток равен 4
tm1637.display(1, digitoneT); // выводим на дисплей TM1637 значение темепературы в целых десятках
tm1637.display(2, digittwoT); // выводим на дисплей TM1637 значение темепературы в целых единицах
tm1637.display(3, 12); // выводим на дисплей TM1637 знак Цельсий,
//то есть "С" (12) после значения температуры
delay (5000); // Пауза
tm1637.display(1, digitoneH); // выводим на дисплей TM1637 значение влажности в целых десятках
tm1637.display(2, digittwoH); // выводим на дисплей TM1637 значение влажности в целых единицах
tm1637.display(3, 15); // выводим на дисплей TM1637 другой знак,
//например "F" (15) после значения влажности
delay (5000); // Пауза
}
Ещё один вариант, но с выводом на дисплей знака градуса и влажности (туман - три полоски). Схема немного другая.
Проверка сенсорного модуля KY-036 на управление встроенным светодиодом Arduino
int digitalPin = 2; // назначаем цифровой вывод "2"
int val = 0; // присваиваем переменной "val" нулевое значение
void setup()
{
pinMode(LED_BUILTIN, OUTPUT); // задействовать, но не включать встроенный светодиод
}
void loop()
{
val = digitalRead(digitalPin); // "val" считывает значение с вывода "2"
if (val == 1) // если val равно логической единице, то:
{
digitalWrite(LED_BUILTIN, HIGH); // включить встроенный светодиод
delay(1000); // задержать свечение светодиода на одну секунду
}
else // иначе (или val равно логическому нулю):
{
digitalWrite(LED_BUILTIN, LOW); // погасить встроенный светодиод
}
}
FLProg для тех кто не знаком с языком программирования
Для тех кто не знаком с языком программирования есть программа FLProg, где можно нарисовать блочную схему из готовых встроенных (или своих) блоков, а программа FLProg сама за вас создаст готовый скетч. Вам останется только залить его в Arduino и наслаждаться результатом. Ниже представлен скетч автоматически созданный программой FLProg для примера проверки сенсорного модуля, о котором было упомянуто в предыдущем сообщении.
Алгоритм составления из блоков такой:
создаём вывод 2 и назначаем его как вход, называем его именем digitalPin
создаём вывод 13 и назначаем его как встроенный светодиод и назовём его LED_BUILTIN
подаём сигнал с сенсорного модуля на вход 2
сигнал "логическая единица" со входа 2 сразу подаётся на RS-триггер
сигнал "логический ноль" со входа 2 подаётся через таймер задержки на вход сброса RS-триггера
с выхода RS-триггера сигнал подаётся на таймер который сохраняет значение выхода RS-триггера на 1 секунду
сигнал с таймера продолжительностью 1 секунда подаётся на встроенный светодиод.
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime)
{return (currentTime>=(startTime + period));
}
Приводится описание современной, мощной и удобной среды разработки mikroC, которая включает большую библиотеку готовых функций для работы с разнообразными интерфейсами и устройствами и позволяет быстро создавать эффективные программы на языке высокого уровня Си для микроконтроллеров семейств PIC, AVR, MCS-51 и др.
Сегодня практически невозможно представить себе приложение, не обладающее интерфейсом пользователя. Понятия Software и GUI (Graphical User Interface) неразрывно связаны друг с другом.
В данной статье рассказывается о том, как легко и просто освоить один из новых продуктов Borland C++ Builder 6.0 для разработки программ и быстро начать создавать собственные программы, работающие в операционной системе Windows.