led 2 цифры 8 контактов прикрутить к ардуине

Protez1999
Offline
Зарегистрирован: 08.07.2012

Подскажите пожалуйста как подрубается?? http://www.alfacomponent.com/r_rayconn/index_2.files/PDF/DISPLAY/REC-S32...

Protez1999
Offline
Зарегистрирован: 08.07.2012

МОДЕЛЬ rec-s3261csr

1.CATHODEG
2.CATHODEDP1, DP2
3.CATHODEA
4.CATHODEF
5.CO ONANODEDIG.2
6.CATHODED
7.CATHODEE
8.CATHODEC
9.CATHODEB
10.CO ONANODEDIG.1

Разобрался 5 и 10 минус остальное +

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

А че ссылка битая?

Вообще-то на катоды обычно подают минус, на анод - плюс. 

Но у Вас как раз с общим катодом, так что катоды через транзисторные ключи к земле, сегменты через резисторы 100 - 150 Ом к выходам. 

Индикация динамическая.

Изучите статью по динамической индикации.

Protez1999
Offline
Зарегистрирован: 08.07.2012

ССЫЛКА НОРМ НО НАДО ДВА РАЗА ЖАТЬ И ТОГДА ОТКРЫВАЕТ

все подключил через шаговый регистр. гребаные цифры запаралелены тока минус разный, получаются дублируют друг друга. Там до 6 вольт 80ма можно поэтому сопротивление не ставил 

получается мне надо на минс повесить транзистор и откравать их с ардуинки на сколько я понял

leshak
Offline
Зарегистрирован: 29.09.2011

Protez1999 пишет:

ССЫЛКА НОРМ НО НАДО ДВА РАЗА ЖАТЬ И ТОГДА ОТКРЫВАЕТ

Вы бы лучше не кричали, а, все-таки дали нормальную ссылку, без мусора после имени файла. А что-бы они не коцались при вставке - давайте ссылки через кнопку "Вставить ссылку", тогда парсеру не нужно "гадать" где ссылка закончилась (он часто ошибается). Да и нормальное имя, а не голая ссылка в тексте выглядят симпатичней.

Protez1999
Offline
Зарегистрирован: 08.07.2012


REC-S3261-устройство. Уже разобрался что и как. Просто повешу на минус транзисторы и буду прерывать по очереди. Осталось выяснить какой интервал делать чтоб гла не заметил мерцание.

у меня так не получилось вставить как у вас

leshak
Offline
Зарегистрирован: 29.09.2011

Protez1999 пишет:

Осталось выяснить какой интервал делать чтоб гла не заметил мерцание.

Если глаза закрыть - точно ничего не заметят :)

Если сеьрезней, то общий подход - поменьше. Но все-таки оставить какое-то время свечения каждого сегмента, что-бы все-таки их было видно. А вот паузу между сегментами - стремимся свести к нулю. Чем быстрее "бегаем по ним"  - тем лучше.

"Выяснять" можно "методом научного тыка". Ставите "какой-нибудь" и уменьшаете пока мерцание не пропадет.

А к совету AlexFisher, по поводу резисторов, все-таки прислушайтесь. Может и без них зарабоатет, но это "испытывать судьбу".

Protez1999 пишет:

у меня так не получилось вставить как у вас

Выделяете текст который хотите сделать ссылкой. Нажимаете кнопку "вставить ссылку" (символ глобуса с звеном цепи), в поле URL вводите вашу ссылку и нажимаете OK.

 

 Ну или нажимаете "Источник" и набираете обычную html ссылку

 

<a href="http://google.com">хотите сделать ссылкой</a>

 

leshak
Offline
Зарегистрирован: 29.09.2011

AlexFisher пишет:

сегменты через резисторы 100 - 150 Ом к выходам. 

А обязательно на каждый сегмент резистор вешать? Раз "катод общий", не проще на него будет вывесить один резистор (раз уж несколко сегментов сразу мы, все-равно, не собираемся зажигать)

Protez1999
Offline
Зарегистрирован: 08.07.2012

Если вешать на минус то яркость меняется в зависимости от включеных диодов. Я никуда ниче не вешал 60ма пик думаю сдвиговый регистр больше не выдаст

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

leshak пишет:

AlexFisher пишет:

сегменты через резисторы 100 - 150 Ом к выходам. 

А обязательно на каждый сегмент резистор вешать? Раз "катод общий", не проще на него будет вывесить один резистор (раз уж несколко сегментов сразу мы, все-равно, не собираемся зажигать)

Как это не собираемся? Разные цифры состоят из разного количества сегментов!

Ну, если мы мультипоексирование будем делать по снгментвм, а не по цифрам, то можно и по одному, но тогда на сегменты тоже ключи нужны, вывод не потянет большого тока (при мультиплексировании по цифрам он больше в 2 раза - 2 цифры, по сегментам - в 7 раз)

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Protez1999 пишет:

Если вешать на минус то яркость меняется в зависимости от включеных диодов. Я никуда ниче не вешал 60ма пик думаю сдвиговый регистр больше не выдаст

Ага, не выдаст, просто сгорит и всё :)

Protez1999
Offline
Зарегистрирован: 08.07.2012

Посмотрим- сгорит так сгорит хрен с ним пока задача заставить все работать.  кп505 подключил к минусу контакта чтоб мерцал получается 1 контакт плюс ардуины (управляющий пин) 2 минус экрана 3 общий минус между 1 и3 диод

Protez1999
Offline
Зарегистрирован: 08.07.2012


Protez1999
Offline
Зарегистрирован: 08.07.2012

почему есть очертиния второго числа. подключено через кп505 1 контакт + от ардуины 2 Контакт - от экрана 3 контакт минус от ардуины между 1 и 3 диод 

maksim
Offline
Зарегистрирован: 12.02.2012

 А код можно посмотреть?

Protez1999
Offline
Зарегистрирован: 08.07.2012
//Пин подключен к ST_CP входу 74HC595
int latchPin = 5;
//Пин подключен к SH_CP входу 74HC595
int clockPin = 6;
//Пин подключен к DS входу 74HC595
int dataPin = 7;
int dir = 5; //общая задержка
int led1 = 8;//транзистор кп505 1 цифра
int led2 = 9; // nh 505 2 цифры
 
 
 
void setup() {
  //устанавливаем режим OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

// 00000001 - низ
// 00000010 - центр
// 00000100 - точка
// 00001000 - верх
// 00010000 - лево верх
// 00100000 - право верх
// 01000000 - право низ
// 10000000 - лево низ

// 1 - 01100000
// 2 - 10101011
// 3 - 01101011
// 4 - 01110010
// 5 - 01011011
// 6 - 11011011
// 7 - 01101000
// 8 - 11111011
// 9 - 01111011
// 0 - 11111001

void loop() {
    digitalWrite(latchPin, LOW);
    // передаем последовательно на dataPin
    shiftOut(dataPin, clockPin, MSBFIRST, B01100000);  
 
    //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    digitalWrite(latchPin, HIGH);
    // пауза перед следующей итерацией
    delay(dir);
    digitalWrite(8,1);
    digitalWrite(9,0);
    
    digitalWrite(latchPin, LOW);
    // передаем последовательно на dataPin
    shiftOut(dataPin, clockPin, MSBFIRST, B10101011);  
 
    //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    digitalWrite(latchPin, HIGH);
    // пауза перед следующей итерацией
    delay(dir);
    digitalWrite(8,0);
    digitalWrite(9,1);
}

 

leshak
Offline
Зарегистрирован: 29.09.2011

 Не уверен, но как-то была проблема "паразитного свечения"  при управлении матрицей диодов. Возможно тут что-то похоже.

Проблема в том, что digitalWrite - относительно "тормозная штука". К тому же выполняемая "последовательно".

Следовательно между строками 49-50 у вас есть момент когда 8,9-тый установленый оба в единицу. "Лечить можно" всегда устанавливая первый тот пин который 0 или пользоватся прямой записью в порт 

А еще, у вас явно есть задержка (и наверное это более важно) между тем как вы сконфигурили 8,9-тый пин и "защелкиваем" регистр, тем самым устанавливая значения на выходах". "Передача данных" (siftOut) тоже же время занимает. Так что IMHO логичней было-бы делать устновка 8,9 пина сразу после latchPin. Иначе вы "засветили другую цифру", а "выходы" включены еще для "старой".

А в идеале. Вообще все три пина (8,9,latchPin) выставлять синхронно. Только выбрать их так что-бы они попадали на один порт.

 

Protez1999
Offline
Зарегистрирован: 08.07.2012

Попробовал все ваши способы ниче не помогло. при переставлении  49-50 и 61-61 перед задержкой цифры меняются местами. больше гришу на диод что он сохраняет ток который и подсвечивает. если задержка большая такого не наблюдается но и цыфры загораются по очереди 

leshak
Offline
Зарегистрирован: 29.09.2011

 Точно "все" попробовали? Выставлять одноверменно 8,9, latchPin=HIGH вместе,без промежутков во времени пробовали (я писал что это даже важней).

leshak
Offline
Зарегистрирован: 29.09.2011

 Вот так пробовали?

//Пин подключен к ST_CP входу 74HC595
int latchPin = 5;
//Пин подключен к SH_CP входу 74HC595
int clockPin = 6;
//Пин подключен к DS входу 74HC595
int dataPin = 7;
int dir = 5; //общая задержка
int led1 = 8;//транзистор кп505 1 цифра
int led2 = 9; // nh 505 2 цифры
 
 
 
void setup() {
  //устанавливаем режим OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

// 00000001 - низ
// 00000010 - центр
// 00000100 - точка
// 00001000 - верх
// 00010000 - лево верх
// 00100000 - право верх
// 01000000 - право низ
// 10000000 - лево низ

// 1 - 01100000
// 2 - 10101011
// 3 - 01101011
// 4 - 01110010
// 5 - 01011011
// 6 - 11011011
// 7 - 01101000
// 8 - 11111011
// 9 - 01111011
// 0 - 11111001

void loop() {
    digitalWrite(latchPin, LOW);
    // передаем последовательно на dataPin
    shiftOut(dataPin, clockPin, MSBFIRST, B01100000);  
 
    //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    digitalWrite(latchPin, HIGH);
    digitalWrite(8,0);
    digitalWrite(9,1);
    // пауза перед следующей итерацией
    delay(dir);
  
    
    digitalWrite(latchPin, LOW);
    // передаем последовательно на dataPin
    shiftOut(dataPin, clockPin, MSBFIRST, B10101011);  
 
    //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    digitalWrite(latchPin, HIGH);
    digitalWrite(8,1);
    digitalWrite(9,0);
    
    
    // пауза перед следующей итерацией
    delay(dir);

}

 

Protez1999
Offline
Зарегистрирован: 08.07.2012

да пробовал. цифры просто поменялись местами. я грешу на диод. больше ниче в голову не приходит

Protez1999
Offline
Зарегистрирован: 08.07.2012

 у меня подключено без резисторов мож в этом проблема. и я еще никак не могу догнать - я минус убираю с ардуины и всеравно 2 экран светит. откуда минус берется

leshak
Offline
Зарегистрирован: 29.09.2011

Protez1999 пишет:

да пробовал. 

Можете именно мой скетч скопировать и попробовать? Скопировать и вставить (а не править свой глядя на мой). Понимаю что "нудю", но все-таки есть вероятность что вы пробовали что-то чуток другое.

P.S. А еще скажите что у вас за ардуина. На каком камне?

leshak
Offline
Зарегистрирован: 29.09.2011

 Если предопложить что у вас Atmeg168/328

То можно перевесить latchPin на 10-тый, к примеру, и выставлять их все три "воистину синхронно".

Вместо 

    digitalWrite(latchPin, HIGH);
    digitalWrite(8,0);
    digitalWrite(9,1);

Писать

PORTB=B110;

И 

POTB=B101 для другой цифры

Protez1999
Offline
Зарегистрирован: 08.07.2012

всеравно тотже эфект. не умел так делать раньше. а обьясните как определяется с какого порта начаать выполнять а то читал и не понял?? POTB=B101 где тут написано что  8-10??? как я понимаю первая цифра для 8 порта вторая для 9 и 3 для 10

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

паразитная засветка - типичная проблемма при динамической индикации. Диоды "помнить" не умеют, умеют понить индуктивности ток и конденцаторы напряжение. У Вас есть ошибка - при смене цифры в регистре обе цифры должны быть погашены. Алгоритм для цикла должен выглядеть так:

  1. Гасим вторую цифру
  2. Передаем первую
  3. Защелкиваем первую
  4. Зажигаем первую цифру
  5. пауза
  6. Гасим первую цифру
  7. Выводим вторую цифру
  8. защелкиваем вторую цифру
  9. Зажигаем вторую цифру
  10. пауза.

Бывает, что емкость монтажа велика, и все равно есть небольшая подсветка. Тогда еще добавляют маленькие паузы перед зажиганием цифр.

Для ожной цифры это примерно так должно выглядеть:

    digitalWrite(9,0);
    digitalWrite(latchPin, LOW);
    // передаем последовательно на dataPin
    shiftOut(dataPin, clockPin, MSBFIRST, B01100000);  
 
    //"защелкиваем" регистр, тем самым устанавливая значения на выходах
    digitalWrite(latchPin, HIGH);
    // пауза перед следующей итерацией
    digitalWrite(8,1);
    delay(dir);

 

Protez1999
Offline
Зарегистрирован: 08.07.2012

для одной цыфры проблемы с застветкой нет все норм работает. для интереса делал отсчет по кругу 0-9. возникает проблема только для 2. мне кажется что с диода не успевает уйти весь ток за 10 тысячных секунды поэтому и получается засветка 

maksim
Offline
Зарегистрирован: 12.02.2012

Во-первых вы забыли настроить 9 и 8 выводы на выход.

maksim
Offline
Зарегистрирован: 12.02.2012

 А во-вторых вот так можно получить ту самую паузу о которой говорилось выше:

//Пин подключен к ST_CP входу 74HC595
int latchPin = 5;
//Пин подключен к SH_CP входу 74HC595
int clockPin = 6;
//Пин подключен к DS входу 74HC595
int dataPin = 7;
int dir = 5; //общая задержка
int led1 = 8;//транзистор кп505 1 цифра
int led2 = 9; // nh 505 2 цифры



void setup() {
  //устанавливаем режим OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

// 00000001 - низ
// 00000010 - центр
// 00000100 - точка
// 00001000 - верх
// 00010000 - лево верх
// 00100000 - право верх
// 01000000 - право низ
// 10000000 - лево низ

// 1 - 01100000
// 2 - 10101011
// 3 - 01101011
// 4 - 01110010
// 5 - 01011011
// 6 - 11011011
// 7 - 01101000
// 8 - 11111011
// 9 - 01111011
// 0 - 11111001

void loop() {
  digitalWrite(latchPin, LOW); 
  shiftOut(dataPin, clockPin, MSBFIRST, B01100000); // передаем последовательно на dataPin     
  digitalWrite(latchPin, HIGH); //"защелкиваем" регистр
  digitalWrite(led2, 1);   
  delay(dir);// пауза перед следующей итерацией
  digitalWrite(led2, 0);  
  //delay(1);  // Сюда можно поставить паузу если нужно   
  
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, B10101011); // передаем последовательно на dataPin
  digitalWrite(latchPin, HIGH);//"защелкиваем" регистр, тем самым устанавливая значения на выходах
  digitalWrite(led1, 1);
  delay(dir); // пауза перед следующей итерацией
  digitalWrite(led1, 0);
  //delay(1);  // Сюда можно поставить паузу если нужно 
}

 так как функции shiftOut и digitalWrite сравнительно медленные, то пауза получится за время их выполнения.

Protez1999
Offline
Зарегистрирован: 08.07.2012

спасиб попробую. точно забыл на выход поставить 

Protez1999
Offline
Зарегистрирован: 08.07.2012

ниче не поменялось. скорее всего проблема железа а не программы 

Protez1999
Offline
Зарегистрирован: 08.07.2012

попробую резисторы повесить мож какой остаточный пробивается 

maksim
Offline
Зарегистрирован: 12.02.2012

 Резисторы не помогут. Вы задержки пробовали ставить?

maksim
Offline
Зарегистрирован: 12.02.2012

 А если так то тоже самое?

//Пин подключен к ST_CP входу 74HC595
int latchPin = 5;
//Пин подключен к SH_CP входу 74HC595
int clockPin = 6;
//Пин подключен к DS входу 74HC595
int dataPin = 7;
int dir = 5; //общая задержка
int led1 = 8;//транзистор кп505 1 цифра
int led2 = 9; // nh 505 2 цифры



void setup() {
  //устанавливаем режим OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

// 00000001 - низ
// 00000010 - центр
// 00000100 - точка
// 00001000 - верх
// 00010000 - лево верх
// 00100000 - право верх
// 01000000 - право низ
// 10000000 - лево низ

// 1 - 01100000
// 2 - 10101011
// 3 - 01101011
// 4 - 01110010
// 5 - 01011011
// 6 - 11011011
// 7 - 01101000
// 8 - 11111011
// 9 - 01111011
// 0 - 11111001

void loop() {
  digitalWrite(latchPin, LOW); 
  shiftOut(dataPin, clockPin, MSBFIRST, B01100000); // передаем последовательно на dataPin     
  digitalWrite(latchPin, HIGH); //"защелкиваем" регистр
  digitalWrite(led2, 1);   
  delay(dir);// пауза перед следующей итерацией
  digitalWrite(led2, 0);  
  delay(5);  // Сюда можно поставить паузу если нужно   
  
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, B10101011); // передаем последовательно на dataPin
  digitalWrite(latchPin, HIGH);//"защелкиваем" регистр, тем самым устанавливая значения на выходах
  digitalWrite(led1, 1);
  delay(dir); // пауза перед следующей итерацией
  digitalWrite(led1, 0);
  delay(5);  // Сюда можно поставить паузу если нужно 
}

 

Protez1999
Offline
Зарегистрирован: 08.07.2012

Попробовал все варианты что тут предлагались!!!+ еще свои домыслы 

maksim
Offline
Зарегистрирован: 12.02.2012

 Вы меньше чем за одну минуту успели проверить последний вариант? Так вы его проверили или нет? Вы код копировали? в дуину заливали?

Protez1999
Offline
Зарегистрирован: 08.07.2012

На задержки в секунду все тухнет. заметил что при задержки в 700 милисек тухнет не сразу а постепенно  за доли секунды. вот поэтому наверное и этот гемор. у меня счас стоят обычные светодиоды на 1 и3 ноги транзистора поставлю просто диод мож из-за него. ему просто не хватает времени полностью погаснуть

Protez1999
Offline
Зарегистрирован: 08.07.2012

Я его попробовал до того как вы написали посл сообщение. вы ведь и до этого этот вариант предлагали . а нет там немного не так вы в числе вкл и гасите диод

maksim
Offline
Зарегистрирован: 12.02.2012

 а зачем диод стоит?

maksim
Offline
Зарегистрирован: 12.02.2012

и я так и не понял где он стоит, можете схему нарисовать?

Protez1999
Offline
Зарегистрирован: 08.07.2012

там получается надо минус с экрана на общий зоконектить без диода не работает а 1 нога транз идет с порта ардуины 

maksim
Offline
Зарегистрирован: 12.02.2012

 Все равно я вас не понял, диод где стоит и в каком направлении?

Protez1999
Offline
Зарегистрирован: 08.07.2012

посмотрите фото вверху там справа транзистор ноги слева направо 1 порт ардуины 2 минус от экрана 3 минус ардуины. между 1 и 3 диод плюсом в 1 минусом в 3

maksim
Offline
Зарегистрирован: 12.02.2012

 Так без диода и сейчас не работает? Или не работало когда порты были не настоены на выход?

Protez1999
Offline
Зарегистрирован: 08.07.2012

без диода постоянно горяд два порта просто не выключает резистор(тьху блин транзистор). с диодом выключает. без диода не счас не тогда не работало. не настроеные порты всеравно работали как счас от того что я их обьявил выходом ниче не поменялось в работе

maksim
Offline
Зарегистрирован: 12.02.2012

 Какой еще резистор??? Хотите нормальной помощи нарисуйте схему.

А вообще все должно работать без диода и резистора и еще там чего.

Если вы правильно отсчитываете ноги транзистора, то судя вот по этой картинке он у вас подключен не верно.

maksim
Offline
Зарегистрирован: 12.02.2012

 И я так понял расположение И-С-З этого транзистора зависит от производителя... так что проверяйте по-всякому...

maksim
Offline
Зарегистрирован: 12.02.2012

 Если вы раньше уже пробовали включать транзистор по-всякому, то он мог не работать из-за того что не были настроены выводы.

Protez1999
Offline
Зарегистрирован: 08.07.2012

все правильно подключено в кп 505 ноги идут не так как у вас на рисунке 

step962
Offline
Зарегистрирован: 23.05.2011

Protez1999 пишет:

все правильно подключено в кп 505 ноги идут не так как у вас на рисунке

На вашем рисунке (если руководствоваться техпаспортом Интеграл, где оч. похожая картинка):
1 - затвор
2 - сток
3 - исток

На картинке macsim'a
1 - исток
2 - сток
3 - затвор

т.е. нумерация обратная, а расположение З-И-С то же самое

Так что
1) у него картинка тоже верная (исток слева при взгляде на плоскую сторону транзистора, ноги снизу)
2) вы, похоже ориентируетесь не по назначению выводов, а по цифирькам (т.н. Arduino-подход). А тут возможны разные - не всегда приятные - неожиданности.

Protez1999
Offline
Зарегистрирован: 08.07.2012

Я ориентировался по назначению входов просто не с той стороны посмотел на его. ну не суть. сегодня попробую отдельно 1 элементом экрана поморгать и посмотреть на затуханиеи и все станет ясно