Arduino. Изучаем вместе
Добавлено: 21 фев 2018, 18:02
Сообщение не по теме
Код: Выделить всё
const int LED=10; // Контакт 10 для подключения светодиода
const int BUTTON=2; // Контакт 2 для подключения кнопки
void setup()
{
// Сконфигурировать контакт светодиода как выход
pinMode(LED, OUTPUT);
// Сконфигурировать контакт кнопки как вход
pinMode(BUTTON, INPUT);
}
void loop()
{
if (digitalRead(BUTTON) == LOW)
{
// Выключаем светодиод, подавая на вывод 0 (LOW)
digitalWrite(LED, LOW);
}
else
{
// Включаем светодиод, подавая на вывод 1 (HIGH)
digitalWrite(LED, HIGH);
}
}
Код: Выделить всё
if (digitalRead(BUTTON) != LOW)
Код: Выделить всё
const int LED=10; // Контакт 10 для подключения светодиода
const int BUTTON=2; // Контакт 2 для подключения кнопки
int prevStatusLED = LOW; // Предыдущий уровень на выходе для светодиода
boolean pressButton = false; // Кнопка нажата
void setup()
{
// Сконфигурировать контакт светодиода как выход
pinMode(LED, OUTPUT);
// Сконфигурировать контакт кнопки как вход
pinMode(BUTTON, INPUT);
}
void loop()
{
// Проверка нажатия кнопки
if (digitalRead(BUTTON) == HIGH && !pressButton)
{
if (prevStatusLED == LOW)
{
digitalWrite(LED, HIGH);
prevStatusLED = HIGH;
}
else
{
digitalWrite(LED, LOW);
prevStatusLED = LOW;
}
pressButton = true;
}
if (digitalRead(BUTTON) == LOW)
{
delay(20); // Защита от дребезга контактов
pressButton = false;
}
}
Код: Выделить всё
void setup() {
// Выводы 0-7 назначаем выходами
for (int i=0; i<=8; i++)
{
pinMode(i, OUTPUT);
}
// На выходы 0-7 подаём высокий уровень, зажигаем светодиоды
for (int i=0; i<=8; i++)
{
digitalWrite(i, HIGH);
}
delay(1000);
// На выходы 0-7 подаём низкий уровень, зажигаем светодиоды
for (int i=0; i<=8; i++)
{
digitalWrite(i, LOW);
}
}
void loop() {
}
Код: Выделить всё
const int BUTTON = 13; // Контакт 13 для подключенния кнопки
int tekButton = LOW; // Текущее состояние кнопки
int prevButton = LOW; // Предыдущее состояние кнопки
int Status = 0; // Хранилище состояния системы:
// 0 - светодиоды погашены
// 1 - горит первый светодиод
// 2 - горит второй светодиод
// 3 - горит третий светодиод
// 4 - горит четвёртый светодиод
// 5 - горит пятый светодиод
// 6 - горит шестой светодиод
// 7 - горит седьмой светодиод
// 8 - горит восьмой светодиод
void setup() {
// Выводы 2 - 9 назначаем выходами
for (int i = 2; i <= 9; i++)
{
pinMode(i, OUTPUT);
}
// Вывод 13 назначаем входом
pinMode(13, INPUT);
}
// Функция сглаживания дребезга. Принимает в качестве
// аргумента предыдущее состояние кнопки и выдаёт фактическое.
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON); // Считываем состояние кнопки
if (last != current) // Если изменилось...
{
delay(5); // Ждём 5 мс
current = digitalRead(BUTTON); // Считываем состояние кнопки
return current; // Возвращаем состояние кнопки
}
}
void loop() {
tekButton = debounce(prevButton); // Считываем состояние кнопки
if (prevButton == LOW && tekButton == HIGH) // Если нажатие...
{
Status++; // Увеличиваем Status на единицу
if (Status > 8) // Если Status вышел за допустимые пределы
{
Status = 0; // Обнуляем
}
}
prevButton = tekButton;
// На выходы 2 - 9 подаём низкий уровень, гасим светодиоды
for (int i = 2; i <= 9; i++)
{
digitalWrite(i, LOW);
}
if (Status > 0) // Если Status больше нуля...
{
digitalWrite(Status + 1, HIGH); // Зажигаем соответствующий светодиод
}
}
Код: Выделить всё
const int BUTTON = 13; // Контакт 13 для подключенния кнопки
int tekButton = LOW; // Текущее состояние кнопки
int prevButton = LOW; // Предыдущее состояние кнопки
int Status = 0; // Хранилище состояния системы:
// 0 - светодиоды погашены
// 1 - горит первый светодиод
// 2 - горит второй светодиод
// 3 - горит третий светодиод
// 4 - горит четвёртый светодиод
// 5 - горит пятый светодиод
// 6 - горит шестой светодиод
// 7 - горит седьмой светодиод
// 8 - горит восьмой светодиод
int prevStatus = 0; // Предыдущий статус
const int holdTime = 500; // Время удержания кнопки в мс
int currentTime = millis(); // Время работы скетча в мс
void setup() {
// Выводы 2 - 9 назначаем выходами
for (int i = 2; i <= 9; i++)
{
pinMode(i, OUTPUT);
}
// Вывод 13 назначаем входом
pinMode(13, INPUT);
}
// Функция сглаживания дребезга. Принимает в качестве
// аргумента предыдущее состояние кнопки и выдаёт фактическое.
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON); // Считываем состояние кнопки
if (last != current) // Если изменилось...
{
delay(5); // Ждём 5 мс
current = digitalRead(BUTTON); // Считываем состояние кнопки
}
return current; // Возвращаем состояние кнопки
}
// Функция изменения статуса
void incStatus()
{
Status++; // Увеличиваем Status на единицу
if (Status > 8) // Если Status вышел за допустимые пределы
{
Status = 0; // Обнуляем
}
}
void loop() {
tekButton = debounce(prevButton);
if (prevButton == HIGH && tekButton == HIGH) // Если кнопка нажата длительное время
{
if (millis() - currentTime > holdTime) // Если время удержания кнопки больше заданного
{
incStatus(); // Изменяем статус
currentTime = millis(); // Текущее время
}
}
if (prevButton == LOW && tekButton == HIGH) // Если нажатие...
{
incStatus(); // Изменяем статус
currentTime = millis(); // Текущее время
}
// Гасим светодиоды только если статус изменился
if (Status != prevStatus)
{
// На выходы 2 - 9 подаём низкий уровень, гасим светодиоды
for (int i = 2; i <= 9; i++)
{
digitalWrite(i, LOW);
}
}
if (Status > 0) // Если Status больше нуля...
{
digitalWrite(Status + 1, HIGH); // Зажигаем соответствующий светодиод
}
prevButton = tekButton;
prevStatus = Status;
}
artolik писал(а):Источник цитаты Игорь вы создали эту тему с целью в дальнейшем использовать arduino для управления чпу станочком?
artolik писал(а):Источник цитаты сделаю парочку фото станочка и опишу его.