Технический форум
Вернуться   Технический форум > Электроника, самоделки и техника > Форум по электронике > Микропроцессоры


Ответ
 
Опции темы Опции просмотра
Старый 27.09.2015, 12:39   #1 (permalink)
yozhyk
Новичок
 
Регистрация: 27.09.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Arduino Uno и семисегментный индикатор с общим анодом

Помогите новичку. Есть Arduino Uno и семисегментный индикатор с общим анодом (то есть общий +, если ошибся с наименованием). На плате 6 аналоговых выводов, на которые могу подать потенциал земли чтобы светились светодиоды. А вот седьмой светодиод остается незадействованным. Можно ли подать потенциал земли на остальные выводы?

Знаю о выводах GND, но мне нужно или подавать землю, или убирать его для отображения различных цифр, а здесь земля постоянная.
yozhyk вне форума   Ответить с цитированием

Старый 27.09.2015, 12:39
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

В схожих темах должны встречаться полезные советы

Вопрос по Arduino
Усилительный каскад с общим эмиттером
Семисегментный индикатор

Старый 27.09.2015, 13:12   #2 (permalink)
grelly
падаван
 
Аватар для grelly
 
Регистрация: 23.01.2013
Сообщений: 739
Сказал(а) спасибо: 307
Поблагодарили 27 раз(а) в 3 сообщениях
Репутация: 10792
По умолчанию

это не совсем аналоговые выводы, это входы АЦП, подключайся на цифровые.
гугл в помощь: "arduino uno подключение семисегментного индикатора"
grelly вне форума   Ответить с цитированием
Старый 27.09.2015, 15:42   #3 (permalink)
yozhyk
Новичок
 
Регистрация: 27.09.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от grelly Посмотреть сообщение
это не совсем аналоговые выводы, это входы АЦП, подключайся на цифровые.
гугл в помощь: "arduino uno подключение семисегментного индикатора"
Если бы нашел, и не спрашивал бы. Не получается подать на цифровые потенциал земли. В поиске только варианты подключения сегментного индикатора с общим катодом. Видел еще что-то с использованием драйверов, но такими не располагаю.
yozhyk вне форума   Ответить с цитированием
Старый 27.09.2015, 17:09   #4 (permalink)
grelly
падаван
 
Аватар для grelly
 
Регистрация: 23.01.2013
Сообщений: 739
Сказал(а) спасибо: 307
Поблагодарили 27 раз(а) в 3 сообщениях
Репутация: 10792
По умолчанию

Цитата:
Сообщение от yozhyk Посмотреть сообщение
Если бы нашел, и не спрашивал бы.
плохо искал.
7_seg.jpg
Цитата:
Сообщение от yozhyk Посмотреть сообщение
Не получается подать на цифровые потенциал земли
так это программно, а не схемотехнически делается! курить азы по AVR срочно! на EasyElectronics например, там есть курс по AVR. код на ассемблере, правда, но там есть разделы о том что такое порты ввода-вывода и зачем они нужны.
grelly вне форума   Ответить с цитированием
Старый 24.01.2016, 05:58   #5 (permalink)
Висмут
Новичок
 
Регистрация: 24.01.2016
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Сам столкнулся с такой проблемой, думал сначала использовать транзисторы как ключи и ими включать светодиоды в семисегментнике, искал на просторах интернета решение сией проблемы, толком ничего и не нашел, варианты были через сдвиговый регистр, таким сам не располагаю пока, все решилось куда проще.
Вот программа секундомера для С.И. с общим КАТОДОМ (-)

#define FIRST_SEGMENT_PIN 2
#define SEGMENT_COUNT 7
byte numberSegments[10] = {
0b00111111, 0b00001010, 0b01011101, 0b01011110, 0b01101010,
0b01110110, 0b01110111, 0b00011010, 0b01111111, 0b01111110,
};
void setup()
{
for (int i = 0; i < SEGMENT_COUNT; ++i)
pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);
}
void loop()
{
int number = (millis() / 1000) % 10;
int mask = numberSegments[number];
for (int i = 0; i < SEGMENT_COUNT; ++i) {
boolean enableSegment = bitRead(mask, i);
digitalWrite(i + FIRST_SEGMENT_PIN, enableSegment);
}
}
в случае когда С.И. с общим анодом, все следует подключать аналогичным образом, но подсоединяем не к земле общий анод, а к 13му пину, к примеру, в программе прописываем #define LED_PIN 13 3й строчкой, в void setup () добавляем pinMode(LED_PIN, OUTPUT); и в void loop() digitalWrite(13, HIGH); и самое главное теперь, меняем цифры в комбинациях сегментов на противоположные значения, получилось так {
0b01000000, 0b01110101, 0b00100010, 0b00100001, 0b00010101,
0b00001001, 0b00001000, 0b01100101, 0b00000000, 0b00000001,}

в итоге программа выглядит так:

#define FIRST_SEGMENT_PIN 2
#define SEGMENT_COUNT 7
#define LED_PIN 13
byte numberSegments[10] = {
0b01000000, 0b01110101, 0b00100010, 0b00100001, 0b00010101,
0b00001001, 0b00001000, 0b01100101, 0b00000000, 0b00000001,
};

void setup()
{
for (int i = 0; i < SEGMENT_COUNT; ++i)
pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
int number = (millis() / 1000) % 10;
int mask = numberSegments[number];
for (int i = 0; i < SEGMENT_COUNT; ++i) {
boolean enableSegment = bitRead(mask, i);
digitalWrite(i + FIRST_SEGMENT_PIN, enableSegment);
}
}
Висмут вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 26.04.2016, 13:11   #6 (permalink)
Efraim
Новичок
 
Регистрация: 26.04.2016
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

могу ли сюда писать?
Efraim вне форума   Ответить с цитированием
Старый 22.02.2019, 08:39   #7 (permalink)
BrooSTR
Новичок
 
Регистрация: 22.02.2019
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Smile С.И. с общим анодом (ELD-436GWB\S411) + arduino uno.

Здравствуйте! Попался под руки семисегментный индикатор(ELD-436GWB\S411) от стиралки, с общим анодом. Подключил его одну секцию к портам arduino uno через резистор 330 Ом:
A-2; B-3; C-4; D-5; E-6; F-7; G-8; Общ.Анод-13.
И по совету Висмута написал код (перебирает числа)
Задержка delay задаёт интервал перебора.
Код громоздкий, но для понимания, думаю, самое то...
И ещё, в моём случае при такой конфигурации максимальный ток потребляет около 35 мА, что не совсем полезно ардуине, так что расчеты производите по своим данным.
Код:
#define Aa 2
#define Bb 3
#define Cc 4
#define Dd 5
#define Ee 6
#define Ff 7
#define Gg 8

int zn;
int i;
void setup() {
  for(i=0; i<8; i++) {
    pinMode(i+1, OUTPUT);
  }
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);
  zn = -1;
}

void loop() {
  for(;;) {
    
  zn++;
  if(zn > 9) {
    zn = 0;
  }
  switch (zn) {
    case 0: 
      digitalWrite(Aa, 0); 
      digitalWrite(Bb, 0); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 0); 
      digitalWrite(Ee, 0); 
      digitalWrite(Ff, 0); 
      digitalWrite(Gg, 1);
      break;
    case 1: 
//      Aa=1; Bb=0; Cc=0; Dd=1; Ee=1; Ff=1; Gg=1;
      digitalWrite(Aa, 1); 
      digitalWrite(Bb, 0); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 1); 
      digitalWrite(Ee, 1); 
      digitalWrite(Ff, 1); 
      digitalWrite(Gg, 1);
      
      break;
    case 2: 
//      Aa=0; Bb=0; Cc=1; Dd=0; Ee=0; Ff=1; Gg=0;
      digitalWrite(Aa, 0); 
      digitalWrite(Bb, 0); 
      digitalWrite(Cc, 1); 
      digitalWrite(Dd, 0); 
      digitalWrite(Ee, 0); 
      digitalWrite(Ff, 1); 
      digitalWrite(Gg, 0);
        
      break;
    case 3: 
//      Aa=0; Bb=0; Cc=0; Dd=0; Ee=1; Ff=1; Gg=0;
      
      digitalWrite(Aa, 0); 
      digitalWrite(Bb, 0); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 0); 
      digitalWrite(Ee, 1); 
      digitalWrite(Ff, 1); 
      digitalWrite(Gg, 0);
        
      break;
    case 4: 
//      Aa=1; Bb=0; Cc=0; Dd=1; Ee=1; Ff=0; Gg=0;
      
      digitalWrite(Aa, 1); 
      digitalWrite(Bb, 0); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 1); 
      digitalWrite(Ee, 1); 
      digitalWrite(Ff, 0); 
      digitalWrite(Gg, 0);
        
      break;
    case 5: 
//      Aa=0; Bb=1; Cc=0; Dd=0; Ee=1; Ff=0; Gg=0;
      
      digitalWrite(Aa, 0); 
      digitalWrite(Bb, 1); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 0); 
      digitalWrite(Ee, 1); 
      digitalWrite(Ff, 0); 
      digitalWrite(Gg, 0);
        
      break;
    case 6: 
//      Aa=0; Bb=1; Cc=0; Dd=0; Ee=0; Ff=0; Gg=0;
      
      digitalWrite(Aa, 0); 
      digitalWrite(Bb, 1); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 0); 
      digitalWrite(Ee, 0); 
      digitalWrite(Ff, 0); 
      digitalWrite(Gg, 0);
        
      break;
    case 7: 
//      Aa=0; Bb=0; Cc=0; Dd=1; Ee=1; Ff=1; Gg=1;
      
      digitalWrite(Aa, 0); 
      digitalWrite(Bb, 0); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 1); 
      digitalWrite(Ee, 1); 
      digitalWrite(Ff, 1); 
      digitalWrite(Gg, 1);
        
      break;
    case 8: 
//      Aa=0; Bb=0; Cc=0; Dd=0; Ee=0; Ff=0; Gg=0;
      
      digitalWrite(Aa, 0); 
      digitalWrite(Bb, 0); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 0); 
      digitalWrite(Ee, 0); 
      digitalWrite(Ff, 0); 
      digitalWrite(Gg, 0);

      break;
    case 9: 
//      Aa=0; Bb=0; Cc=0; Dd=0; Ee=1; Ff=0; Gg=0;
      
      digitalWrite(Aa, 0); 
      digitalWrite(Bb, 0); 
      digitalWrite(Cc, 0); 
      digitalWrite(Dd, 0); 
      digitalWrite(Ee, 1); 
      digitalWrite(Ff, 0); 
      digitalWrite(Gg, 0);

      break;

  }
delay(2000);
 }  
  
}


img_20190222_084444.jpg

img_20190222_084611.jpg

img_20190222_085435.jpg
BrooSTR вне форума   Ответить с цитированием
Старый 22.02.2019, 08:46   #8 (permalink)
BrooSTR
Новичок
 
Регистрация: 22.02.2019
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Smile Datasheet ELD-436GWB\S411

Есть, кстати, даташит на этот С.И.

ELD-436GWB_S411.pdf
BrooSTR вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:34.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.