Arcade PUB
  • Главная
  • Уроки
  • Датчики
  • Проекты
  • Справочник языка Ардуино
  • Справочник
  • Видео
  • Контакты
  • Поддержать
Датчики, Уроки  /  16 февраля, 2021

Четырехразрядный индикатор. Урок 24. Ардуино

by valentino
Четырехразрядный индикатор
Четырехразрядный индикатор

Привет! Мы рассмотрели одноразрядный индикатор. А теперь посмотрим на четырехразрядный 7 сегментный индикатор.

Содержание

  • 1 Для того, чтобы выполнить этот урок нам понадобиться.
  • 2 Четырехразрядный индикатор
  • 3 Схема и программа
  • 4 Полный текст программы
  • 5 Библиотека fDigitsSegtPin.h
  • 6 Заключение
  • 7 Где купить
  • 8 Похожее

Как и одноразрядный индикатор, это несколько светодиодов собранных в общий корпус. Одинаковые светодиоды каждого разряда управляются общими контактами. А для использования разных разрядов служат управляющие регистры.

В прошлый раз мы рассмотрели одноразрядный индикатор. Посмотрите тот пост, если уже забыли или пропустили его.

7 сегментный индикатор. Урок 23. Ардуино

Для того, чтобы выполнить этот урок нам понадобиться.

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • 8 резисторов 220 Ом
  • 7-сегментный четырехразрядный индикатор
  • Кабель USB

Четырехразрядный индикатор

Четырехразрядный индикатор
Схема подключения светодиодов в корпусе индикатора и контактов

Не забудьте подключить светодиоды последовательно с сопротивлением. А разрядные контакты можно подключить напрямую к пинам Ардуино.

Схема и программа

Принципиальная схема подключения Ардуино и индикатора
Принципиальная схема подключения Ардуино и индикатора

В схеме опять много проводов. Но смысл опять в том, чтобы соединить 8 светодиодов и 4 разряда с пинами Ардуино для их адресации.

Чтобы было проще понять какие пины соединять между собой обратим внимание на таблицу.

Цифровой пин АрдуиноПин индикатора
2B
3G
4C
5DP
6D
7E
8F
9A
104
113
122
131
Таблица соединения пинов Ардуино и индикатора

Напишем простой скетч, чтобы проверить индикатор и правильность схемы.

Проверяем работу индикатора
Проверяем работу индикатора
void setup(){
  for( int j=2; j <= 13; j++){
    pinMode(j, OUTPUT);
  }
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
}
void loop(){
  for( int j=2; j <= 9; j++){
    digitalWrite(j, LOW);
  }
    for(int i=2; i<=9; i++){
      digitalWrite(i, HIGH);
      delay(200);
    }
}

В прошлый раз мы написали функцию для отображения чисел на одноразрядном индикаторе. Давайте улучшим ее для четырехразрядного индикатора.

Выводим цифры в каждый разряд
Выводим цифры в каждый разряд
int a = 9;
int b = 2;
int c = 4;
int d = 6;
int e = 7;
int f = 8;
int g = 3;
int p = 5;
int d4 = 10;
int d3 = 11;
int d2 = 12;
int d1 = 13;
int x = 1;
int del = 500;
  
void setup(){
  for( int j=2; j <= 13; j++){
    pinMode(j, OUTPUT);
  }
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
}

void loop(){
  
    digit(x);
    delay(del);
    clean();
    x++;
    if (x == 10){x=0;}
  
}


void clean(){
  for( int j=2; j <= 9; j++){
    digitalWrite(j, LOW);
  }  
}
void digit(int x){
    switch (x) {
        case 1:
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          break;
        case 2:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (e,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 3:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 4:
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 5:
          digitalWrite (a,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 6:
          digitalWrite (a,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (e,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 7:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          break;
        case 8:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (e,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 9:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;         
        case 0:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (e,HIGH);
          digitalWrite (f,HIGH);
          break;           
      }
  
}

Назовем сегменты переменными, чтобы проще к ним обращаться. И выведем одно число на каждом разряде.

Теперь осталось только научить программу выводить числа от 1 до 9999 и использовать точку. Давайте попробуем.

Разные цифры в разных разрядах
Разные цифры в разных разрядах

Полный текст программы

int a = 9;
int b = 2;
int c = 4;
int d = 6;
int e = 7;
int f = 8;
int g = 3;
int p = 5;
int d4 = 10;
int d3 = 11;
int d2 = 12;
int d1 = 13;
int x = 1;
int r = 0;
int del = 500;
  
void setup(){
  for( int j=2; j <= 13; j++){
    pinMode(j, OUTPUT);
  }
}

void loop(){
    BigDigit(1234);
}

void BigDigit(int x){
  r = 3;
  do{    
    rank(r);
    digit(x%10);
    x = x/10;
    r--;
  }while(x);

}

void rank(int x){
  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);

  switch(x){
    case 0: 
      digitalWrite(d1, LOW);
      break;
    case 1: 
      digitalWrite(d2, LOW);
      break;
    case 2: 
      digitalWrite(d3, LOW);
      break;
    case 3: 
      digitalWrite(d4, LOW);
      break;
  }
}
void clean(){
  for( int j=2; j <= 9; j++){
    digitalWrite(j, LOW);
  }  
}
void digit(int x){
    clean();
    switch (x) {
        case 1:
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          break;
        case 2:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (e,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 3:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 4:
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 5:
          digitalWrite (a,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 6:
          digitalWrite (a,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (e,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 7:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          break;
        case 8:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (e,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;
        case 9:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (f,HIGH);
          digitalWrite (g,HIGH);
          break;         
        case 0:
          digitalWrite (a,HIGH);
          digitalWrite (b,HIGH);
          digitalWrite (c,HIGH);
          digitalWrite (d,HIGH);
          digitalWrite (e,HIGH);
          digitalWrite (f,HIGH);
          break;           
      }
  delay(5);
}

Библиотека fDigitsSegtPin.h

Используем библиотеку fDigitsSegtPin.h
Используем библиотеку fDigitsSegtPin.h

Как видите, код программы получается довольно громоздким. И было бы неплохо запаковать его в отдельную библиотеку. К счастью, такая библиотека уже есть. Это fDigitsSegtPin.h Установим ее через менеджер и используем для вывода десятичных цифр.

#include <fDigitsSegtPin.h>
fDigitsSegtPin Display(7, 6, 5, 4, 3, 10, 2, 11, 12, 8, 9, 13);

void setup() {
    Display.begin();
    Display.doPrint_lastDot = 1;
    Display.doPrint_firstZero = 1;
    Display.doReport_overRange = 1;
}

void loop() {
    for(float i = 0.01; i < 10000; i += 0.01) Display.print(i);
}

Заключение

Мы рассмотрели четырехразрядный 7 сегментный индикатор. Написали программу для вывода больших цифр на индикатор и попробовали простую библиотеку для вывода цифр с точкой.

Где купить

  • Модуль KY-008
  • Arduino nano
  • Набор датчиков
  • Arduino Uno

Похожее

Tags

  • Основное

Навигация по записям

7 сегментный индикатор. Урок 23. Ардуино

Share your thoughts Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Новое видео на канале

https://youtu.be/bvzX-edTdS0

Свежие записи

  • Четырехразрядный индикатор. Урок 24. Ардуино
  • 7 сегментный индикатор. Урок 23. Ардуино
  • Клавиатура. Урок 22. Ардуино
  • OLED дисплей. Урок 21. Ардуино
  • Много кнопок на одном пине. Урок 20. Ардуино

Метки

  • Bluetooth
  • RGB Светодиоды
  • WIFI
  • Двигатели
  • Звук
  • Игры
  • Интернет вещей
  • Лего
  • Основное
  • Программирование
  • Уроки

Купить стартовый набор Ардуино UNO на Aliexpress

Стартовый набор Ардуино Уно

Купить набор датчиков для Ардуино 45 штук на Aliexpress

набор датчиков для Ардуино

arcadepub

Do you know how this display works? It is pretty e Do you know how this display works? It is pretty easy to use it with #arduino.
#arduinouno #arduinoproject #arcadepub #ардуино #аркадныйпаб #ардуинопроект
How to use 7 segments indicator with #arduino its How to use 7 segments indicator with #arduino its pretty easy.
#arduinouno #arduinoproject #arcadepub
How to use 4x4 keypad with #arduino check it out. How to use 4x4 keypad with #arduino check it out. #arduinouno #arduinoproject #arcadepub
How to use oled display with #arduino it's pretty How to use oled display with #arduino it's pretty easy. #arcadepub #ардуино #ардуинопроект #arduinoproject #arduinouno
Hi there! How to control button debounce without c Hi there! How to control button debounce without code. Lets see.

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #arduinoproject
Hello there! Let's write a program to control ard Hello there!  Let's write a program to control arduino by ir.

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #arduinoproject
Hey! How are you doing? How do you think, we can c Hey! How are you doing? How do you think, we can control arduino program by ir? I bet we can. 

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #arduinoproject
Hello! There is a second video on my youtube chann Hello! There is a second video on my youtube channel. I've just added subtitles, so you can see how to use if and else structures and for() loop in arduino program. Enjoy, and do NOT forget to subscribe. 
https://youtu.be/8AHfAQyNAqU

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #youtube
Hi there! How is it going? Photo resistor and lase Hi there! How is it going? Photo resistor and laser are here. Look at graphics and try to understand how it works!

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #arduinoproject
Here is ky-039 heart beat arduino module. Do you l Here is ky-039 heart beat arduino module. Do you like it? Write in the comments below!

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #arduinoproject
Its Magic lights with ky-027 arduino module. Do yo Its Magic lights with ky-027 arduino module. Do you like it?  Write in the comments below!

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #arduinoproject
Arduino and #laser are together. Please subscribe Arduino and #laser are together.

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #arduinoproject
Do you know how gyroscope modul works with arduino Do you know how gyroscope modul works with arduino? 

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #rfid #arduinoproject
Do you know how you can use rfid module with ardui Do you know how you can use rfid module with arduino? 

Please subscribe to my instagram and youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #rfid #arduinoproject
It is almost done Please subscribe to my youtube It is almost done

Please subscribe to my youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #flower #autowatering #arduinoproject #robot #spiderbot
Begin to make a spider bot. Please subscribe to Begin to make a spider bot. 

Please subscribe to my youtube channel as well.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #flower #autowatering #arduinoproject #robot #spiderbot
Hello folks! There are 1000 of us on my instagram Hello folks! There are 1000 of us on my instagram account. And i want to tell thanks to each of you!
I'd like to tell more about this project. And that's why i made a video on youtube channel. 
It is in russian, but i have added english subtitles. 
I'm gonna tell you about many intriguing Arduino projects.
So, please, take a look at video. And subscribe to my youtube channel as well. 

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #flower #autowatering
How can we know that flower needs to be watered. L How can we know that flower needs to be watered. Like and Subscribe to know more.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit #flower #autowatering
How to turn light on by clapping. Like and Subscri How to turn light on by clapping. Like and Subscribe to know more.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit
Is it possible to turn light on over the internet? Is it possible to turn light on over the internet? Like and Subscribe to know more.

#arcadepub #diy #doityourself #learn #smarthome #ардуино #аркадныйпаб #сделайсам #умныйдом #arduino #circuit
Загрузи больше…

ArcadePUB @ 2020

arduino@arcadepub.ru

На сайте вы найдете уроки, проекты и обзоры всего, что связано с ардуино.

Аркадные игры и автоматы.

DIY проекты

Метки

  • Bluetooth
  • RGB Светодиоды
  • WIFI
  • Двигатели
  • Звук
  • Игры
  • Интернет вещей
  • Лего
  • Основное
  • Программирование
  • Уроки

Свежие записи

  • Четырехразрядный индикатор. Урок 24. Ардуино
  • 7 сегментный индикатор. Урок 23. Ардуино
  • Клавиатура. Урок 22. Ардуино
  • OLED дисплей. Урок 21. Ардуино
  • Много кнопок на одном пине. Урок 20. Ардуино

Навигация

  • Главная
  • Уроки
  • Датчики
  • Проекты
  • Справочник языка Ардуино
  • Справочник
  • Видео
  • Контакты
  • Поддержать

Дополнительно

Поддержать

Контакты

YouTube
Patreon
VK
Instagram
Twitter