Одновременное нажатие 10 кнопок из любых 120

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

Без отладки, без ловли багов.)))

таки и отлавливает и баги ловит и, даже исправления вносит

sadman41
Offline
Зарегистрирован: 19.10.2016

Про бабу вспомнили, а про динозавров забыли.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

Про бабу вспомнили, а про динозавров забыли.

бабы - это святое

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

ЕвгенийП пишет:

Просто берите и делайте как там написано.

Спасибо большое! код такой нашёлся в апноте avr240, в апноте avr243 кода нет, отправляют к апноте avr240, там код есть для 4х4 матрицы, что радует. 

Немного работал с flowcode, но это кажется не flowcode, Этот код в протеусе выдал 117 ошибок) возможно не для протеуса скорее всего. Спасибо большое за ваши бесценные советы! 

;**** A P P L I C A T I O N N O T E A V R 2 4 0 ********************** ;* ;* Title: 4x4 keypad, wake-up on keypress ;* Version: 1.2 ;* Last Updated: 2004.11.11 ;* Target: All AVR Devices ;* ;* ;* ;* DESCRIPTION ;* This Application note scans a 4 x 4 keypad and uses sleep mode ;* causing the AVR to wake up on keypress. The design uses a minimum of ;* external components. Included is a test program that wakes up the AVR ;* and performs a scan when a key is pressed and flashes one of two LEDs ;* the number of the key pressed. The external interrupt line is used for ;* wake-up. The example runs on the AT90S1200 but can be any AVR with ;* suitable changes in vectors, EEPROM and stack pointer. The timing ;* assumes a 4 MHz clock. A look up table is used in EEPROM to enable the ;* same structure to be used with more advanced programs e.g ASCII output ;* to displays. ;************************************************************************* ;***** Register used by all programs ;******Global variable used by all routines .def temp =r16 ;general scratch space ;Port B pins .equ ROW1 =3 ;keypad input rows .equ ROW2 =2 .equ ROW3 =1 .equ ROW4 =0 .equ COL1 =7 ;keypad output columns .equ COL2 =6 .equ COL3 =5 .equ COL4 =4 ;Port D pins .equ GREEN=0 ;green LED .equ RED =1 ;red LED .equ INTR =2 ;interrupt input .include "1200def.inc" AVR240 11 1232D-AVR-06/06 ;***** Registers used by interrupt service routine .def key =r17 ;key pointer for EEPROM .def status =r21 ;preserve sreg here ;***** Registers used by delay subroutine ;***** as local variables .def fine =r18 ;loop delay counters .def medium =r19 .def coarse =r20 ;*****Look up table for key conversion***************************** .eseg ;EEPROM segment .org 0 .db 1,2,3,15,4,5,6,14,7,8,9,13,10,0,11,12 ;****Source code*************************************************** .cseg ;CODE segment .org 0 rjmp reset ;Reset handler rjmp scan ;interrupt service routine reti ;unused timer interrupt reti ;unused analogue interrupt ;*** Reset handler ************************************************* reset: ldi temp,0xFB ;initialise port D as O/I out DDRD,temp ;all OUT except PD2 ext.int. ldi temp,0x30 ;turn on sleep mode and power out MCUCR,temp ;down plus interrupt on low level. ldi temp,0x40 ;enable external interrupts out GIMSK,temp sbi ACSR,ACD ;shut down comparator to save power main: cli ;disable global interrupts ldi temp,0xF0 ;initialise port B as I/O out DDRB,temp ; 4 OUT 4 IN ldi temp,0x0F ;key columns all low and out PORTB,temp ;active pull ups on rows enabled ldi temp,0x07 ;enable pull up on PD2 and out PORTD,temp ;turn off LEDs sei ;enable global interrupts ready sleep ;fall asleep rcall flash ;flash LEDs for example usage ldi temp,0x40 12 AVR240 1232D-AVR-06/06 out GIMSK,temp ;enable external interrupt rjmp main ;go back to sleep after keyscan ;****Interrupt service routine*************************************** scan: in status,SREG ;preserve status register sbis PINB,ROW1 ;find row of keypress ldi key,0 ;and set ROW pointer sbis PINB,ROW2 ldi key,4 sbis PINB,ROW3 ldi key,8 sbis PINB,ROW4 ldi key,12 ldi temp,0x0F ;change port B I/O to out DDRB,temp ;find column press ldi temp,0xF0 ;enable pull ups and out PORTB,temp ;write 0s to rows rcall settle ;allow time for port to settle sbis PINB,COL1 ;find column of keypress ldi temp,0 ;and set COL pointer sbis PINB,COL2 ldi temp,1 sbis PINB,COL3 ldi temp,2 sbis PINB,COL4 ldi temp,3 add key,temp ;merge ROW and COL for pointer ldi temp,0xF0 ;reinitialise port B as I/O out DDRB,temp ; 4 OUT 4 IN ldi temp,0x0F ;key columns all low and out PORTB,temp ;active pull ups on rows enabled out SREG,status ;restore status register ldi temp,0x00 out GIMSK,temp ;disable external interrupt ;have to do this, because we're ;using a level-triggered interrupt reti ;go back to main for example program ;***Example test program to flash LEDs using key press data*********** flash: out EEAR,key ;address EEPROM sbi EECR,EERE ;strobe EEPROM in temp,EEDR ;set number of flashes AVR240 13 1232D-AVR-06/06 tst temp ;is it zero? breq zero ;do RED LED green_flash: cbi PORTD,GREEN;flash green LED 'temp' times rcall delay sbi PORTD,GREEN rcall delay dec temp brne green_flash exit: ret zero: ldi temp,10 flash_again: cbi PORTD,RED ;flash red LED ten times rcall delay sbi PORTD,RED rcall delay dec temp brne flash_again rjmp exit ;****Time Delay Subroutine for LED flash********************************* delay: ldi coarse,5 ;triple nested FOR loop cagain: ldi medium,255 ;giving about 1/4 second magain: ldi fine,255 ;delay on 4 MHz clock fagain: dec fine brne fagain dec medium brne magain dec coarse brne cagain ret ;***Settling time delay for port to stabilise**************************** settle: ldi temp,255 tagain: dec temp brne tagain ret

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

MaksVV пишет:

ага, и щас вот уже лет десять в коллайдере эти баги ловят. Только как пофиксить, непонятно. 

Так баги ловят не для того, что бы фиксить (это к Богу), а для создания эксплойтов создателем не предусмотренных :). Вот взять, например, туннельный диод...

strarbit
Offline
Зарегистрирован: 12.06.2016

This is a assembly language.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

strarbit пишет:

This is a assembly language.

I dare say that it does not matter what languge is it. This is a mess of letters in one very very long line. Looks a  bit like asm code.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:
Looks a  bit like asm code.
I'd say like a piece of shit!

bwn
Offline
Зарегистрирован: 25.08.2014

Совсем очумели.))))

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

ЕвгенийП пишет:

wdrakula пишет:
Looks a  bit like asm code.
I'd say like a piece of shit!

так выглядит апнота от атмел или она должна выглядеть по другому? может это не тот код? 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

bwn пишет:

Совсем очумели.))))

Вроде, и не пятница :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MYFRIEND пишет:

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

Да, неужели?!

Никогда не видел таких апнот. Вот сравните и найдите отличия между апнотой и piece of shit

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

ЕвгенийП пишет:

Никогда не видел таких апнот

 

форум вставил таким образом апноту что она стала piece of shit, атмеловцы советуют из 4х4 делать код, это и есть их апнота на 64 кнопки? 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MYFRIEND пишет:

форум вставил таким образом апноту 

А мне казалось, что это Вы текст вставили. ну, если форум, то тогда ладно.

MYFRIEND пишет:

атмеловцы советуют из 4х4 делать код, это и есть их апнота на 64 кнопки? 

Я Вам давал другую апноту (243-ю), в которой, в самой первой строчке написано "64-key Push-button Keyboard in 8 x 8 Matrix". Но Вам она не понравилась тем, что там написали как делать, но не сделали за Вас 

MYFRIEND пишет:
в апноте avr243 кода нет

Ну, а что я могу сделать, если Вы сами делать не хотите, а хотите найти готовое? Только пожелать Вам удачи в поисках. Ищите и обрящете.

b707
Offline
Зарегистрирован: 26.05.2017

Совет для ТС - надо перемножить две матрицы 4х4 из апнота 240 - получится матрица 8х8

Altcms
Altcms аватар
Offline
Зарегистрирован: 17.09.2017

Блин, уже 2я страница пошла :) После того как MYFRIEND провёл в пример старинную самоиграйку начала 2000х годов korg pa50 у которого режим midi клавиатуры было побочное явление, и сказал что всё что выпускается не работает, далее стало не интересно.

Кстати, тут sadman41 про динозавров не говорили, так было уже упоминание korg pa50. :)

strarbit
Offline
Зарегистрирован: 12.06.2016

wdrakula пишет:

strarbit пишет:

This is a assembly language.

I dare say that it does not matter what languge is it. This is a mess of letters in one very very long line. Looks a  bit like asm code.

I realized how badly I had messed all this up.
i am sorry for the inconvenience.

Dear sir, wdrakula have a lovely Evening!!!

 

strarbit
Offline
Зарегистрирован: 12.06.2016

Dear sir, ЕвгенийП have a lovely Evening!!!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Altcms пишет:

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

Мне кажется, здесь МОЙДРУГ внезапно открыл для себя факт, который, хотя и не является общеизвестным, но, тем не менее, уже давно не является откровением. Дай Бог памяти, я о нем писал еще лет 15-20 назад. Вот только остааются, миниммум, два вопроса:

1. Действительно ли МОЙДРУГ описывает эффект, о котором я думаю (как-то написано не слишком вразумительно).

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

MYFRIEND пишет:

Кстати тестировали так korg pa50 так он velocity показал из 127 лишь 30% остальное не умеет при цене 1000$ ) лучше поэтому делать свою клавиатуру.

Вот опишите поподробнее, МОЙДРУГ, что это за такие 30%? От чего именно 30%? И как именно эта цифра получена?

Altcms
Altcms аватар
Offline
Зарегистрирован: 17.09.2017

andriano пишет:

Мне кажется, здесь МОЙДРУГ внезапно открыл для себя факт, который, хотя и не является общеизвестным, но, тем не менее, уже давно не является откровением. Дай Бог памяти, я о нем писал еще лет 15-20 назад. Вот только остааются, миниммум, два вопроса:

1. Действительно ли МОЙДРУГ описывает эффект, о котором я думаю (как-то написано не слишком вразумительно).

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

Есть 2 параметра attack velocity (в клавишных скорость нажатия) и release velocity (скорость отпускания клавиши), release velocity чаще всего в бюджетках выпилен, а в низкобюджетных клавиатурах и attack velocity просто выдаёт 64 и всё, типа не могу я на 8 мегагерцовом камешке всё это просчитать, иногда вообще програмно просчитывается уже после контроллера клавиатуры, в бюджетных самоиграйках attack velocity может быть выпилен на полторы октавы на клавишах управления автоаккомпонементом. На старых синтезаторах\клавиатурах это просто глючит из за контактных груп на клавиатуре. Про контроллеры клавиатуры разных производителей рассказывать не буду это слишком долго. Там тоже много нюансов. 

А вот что в голове у "МОЙДРУГ" творится при попытке описать хотелки только ему и известно. Я думаю он далёк от этой темы. 

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

далёк так далёк как хотите 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Altcms пишет:

Есть 2 параметра attack velocity (в клавишных скорость нажатия) и release velocity (скорость отпускания клавиши), release velocity чаще всего в бюджетках выпилен, а в низкобюджетных клавиатурах и attack velocity просто выдаёт 64 и всё...

Я так полагаю, под "attack velocity" подразумевается величина velocity для Note On, под "release velocity" - для Note Off, а под "бюджетными" понимаются те, кто вместо Note Off выдает Note On с velocity=0.

Что касается поднятого МОЙДРУГ вопроса может/не может, то очевидно, что для "низкобюджетных" достаточно лишь опрсить клавиатуру раз в несколько мс, и все будет хорошо.

При матрице 8х8 и периоде опроса 4 мс на выставления на матрице одного значения и его анализ будет уходить 4000/8=500 мкс, что более чем за глаза для любого контроллера.

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

Т.е. для анализа нужны именно конкретные цифры. В первую очередь - исходные, чтобы на их основе можно было получить оценки требуемой производительности МК.

Ну, пусть у нас ход клавиши (черной) 6 мм. По 1 мм отбрасываем с каждой стороны для уверенной работы. Тогда остется 4 мм. -Максимальную скорость движения клавиши не назову, но недавно измерял для барабанной палочки - оказалось 30 м/с. На эту величину и будем ориентироваться. Тогда интервал между срабатыванием датчиков будет 4/30 = 0.133 мс = 133 мкс.

Но нам надо обеспечить измерение с заданной точностью. Точность в этом случае разумно задавать, исходя из особенностей человеческого слуха, т.е. 1 дБ, что соответствует 12%. Разумно предположить, чтобы ошибка была не более 0.5 дБ или 6%, что для нашего случая соответствует интервалу измерения 133*0.06=8 мкс.

За это время мы должны выставить сигнал на каждой из 8 линий, снять сигнал с 16 линий и проаланизировать его.

Т.е. на 1 линию у нас всего 1 мкс - надо считать 16 бит, проанализировать и, если какой-то не равен 0, определить его номер и скинуть в буфер необходимую для дальнейшего анализа информацию. Можно ли это сделать на Меге, вопрос, мне кажется, очевиден.

Идем дальше: у нас есть 127 уровней при том, что динамический диапазон:

- не превышает 84 дБ,

- может существенно зависеть от выбранной velocity curve.

И то и другое приводит к увеличению требуемой точности измерения, т.е. ведет с уменьшению периода. Предположительно, в 2-4 раза. Т.е. нам надо настроить таймер на ~3 МГц, с этой частотой генерировать прерывания, в которых и опрашивать клавиатуру.

Если взять stm32 на 72 МГц, то при 3 МГц на один акт опроса будет приходиться 24 такта, 12 из которых "съест" вход в прерывание, а еще 12 - выход из него. Приплыли...

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

Есть, конечно, и другие вопросы, например, как будут выглядеть импульсы шириной 0.3-1 мкс на концах проводников длиною до полуметра.

Но все это сильно упрощается, если не ставить себе задачей непременное "заполнение" всех 127 уровней velocity.

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

Спасибо большое!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

Если взять stm32 на 72 МГц, то при 3 МГц на один акт опроса будет приходиться 24 такта, 12 из которых "съест" вход в прерывание, а еще 12 - выход из него. Приплыли...

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

Есть, конечно, и другие вопросы, например, как будут выглядеть импульсы шириной 0.3-1 мкс на концах проводников длиною до полуметра.

Но все это сильно упрощается, если не ставить себе задачей непременное "заполнение" всех 127 уровней velocity.

Если коротко, надо обратится к Юрию Панчулу чтобы он реализовал специальный процессор на ПЛИСе, они сейчас стоят разумные деньги

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

andriano пишет:

Есть, конечно, и другие вопросы, например, как будут выглядеть импульсы шириной 0.3-1 мкс на концах проводников длиною до полуметра.

Очень интересно! Спасибо большое всем, кто раскрывает тему колонок и столбиков. Не проста там система когда нужно много нажатий сразу без latency. Очень не проста. Если бы библиотеку написать из апноты. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

MYFRIEND пишет:

Не проста там система когда нужно много нажатий сразу без latency. Очень не проста. Если бы библиотеку написать из апноты. 

latency там вообще ни разу не интересна. Она может представлять интерес при реализации синтезатора, а не клавиатуры.

А по поводу "библиотеки": во-первых, вряд ли тут нужно (и можно) делать что-то в формате библиотеки, а во-вторых, как я, собственно, уже писал выше, нужно конкретное ТЗ. С цифрами.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

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

Собственно задача несколько оффтоп (не требуется одновременность), обычная матричная клавиатура. Вопрос, как её сделать, если у меня немеханические кнопки? Я планирую марахайку с крупной панелью и большим экраном, и чтобы там были чисто царские кнопки, которых я наделаю с пьезопластин (пищалок), а сигнал с них хочу выделять 358мым усилителем или компаратором. Пытаюсь придумать, как приспособить, допустим 25 проводов от отдельных кнопок, к проводам матрицы keypad-а, единственное что пока что приходит в голову - каждую прибацать через оптопару, включив оптопары как кнопки кейпада.

Когда думаю об этом, сразу возникает мысля - блина, это ж на каждую кнопу по оптопаре, не жалко же. Однако ей возражает другая мысля, что по полкорпуса компаратора мне почему-то не жалко. Что думаете? Есть ещё варианты?

Ориентировочно выходит деталек по 80 фэней на кнопку, тобишь с комиссиями и растаможкой ~13 руб.

Второй вариант придуманный мной - повтыкать шифраторов (в который 8 проводов 01234567 входит и три 124 выходит - короче К155ИД3 наоборот). Но по-моему этот варик будет больше мощности жрать, хотя я хз.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Зачем оптопары? Просто сделать матрицу на транзисторах с открытым коллектором. 

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017
вопрос, сделал на hc165 кнопки так

#define NUMBER_OF_SHIFT_CHIPS   1 // количество регистров
#define DATA_WIDTH   NUMBER_OF_SHIFT_CHIPS * 8 // количество входов
#define PULSE_WIDTH_USEC   5 // задержка при считывании данных 
 
// для хранения считаных байт
// если регистров больше двух, то int меняется на long
#define BYTES_VAL_T unsigned int 
 
// пины для подключения регистра
int ploadPin = 8;//shift load selector 
int clockEnablePin = 9;
int dataPin = 11;//data GREEN 
int clockPin = 12;//clock 
 
BYTES_VAL_T pinValues; // текущее значение пинов 
BYTES_VAL_T oldPinValues; // предыдущее значение пинов
 
// функция для считывания пинов
BYTES_VAL_T read_shift_regs() {
    long bitVal;
    BYTES_VAL_T bytesVal = 0;
 
    // опрашиваем регистр о состоянии пинов
    digitalWrite(clockEnablePin, HIGH);
    digitalWrite(ploadPin, LOW);
    delayMicroseconds(PULSE_WIDTH_USEC);
    digitalWrite(ploadPin, HIGH);
    digitalWrite(clockEnablePin, LOW);
 
    // считываем полученные данные о пинах
    for(int i = 0; i < DATA_WIDTH; i++){
        bitVal = digitalRead(dataPin);
        bytesVal |= (bitVal << ((DATA_WIDTH-1) - i));
        digitalWrite(clockPin, HIGH);
        delayMicroseconds(PULSE_WIDTH_USEC);
        digitalWrite(clockPin, LOW);
    }
     
    // возвращяем результат опроса регистра
    return(bytesVal);
}
 
// функция для вывода состояния пинов
void display_pin_values(){
    // перебор всех пинов 
    for(int i = 0; i < DATA_WIDTH; i++){
        Serial.print("  Button-");
        Serial.print(i);
        Serial.print(": ");
        if((pinValues >> i) & 1){
          Serial.print("ON");
        }else{
          Serial.print("OFF"); 
        }   
        Serial.println();
    }
    Serial.println();
}
 
void setup(){
    // для вывода данных в монитор порта
    Serial.begin(115200);
 
    // установка режима работа пинов
    pinMode(ploadPin, OUTPUT);
    pinMode(clockEnablePin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, INPUT);
    digitalWrite(clockPin, LOW);
    digitalWrite(ploadPin, HIGH);
// ***************************************************************** 
    // считываем значения с пинов
    pinValues = read_shift_regs();
    // выводим результат
    display_pin_values();
    // сохраняем текущее значение
    oldPinValues = pinValues;
}
 
void loop(){
    // считываем значения с пинов
    pinValues = read_shift_regs();
    // если значения изменились, то выводим их
    if(pinValues != oldPinValues){

      // выводим результат в монитор порта
        display_pin_values();
        // сохраняем текущее значение
        oldPinValues = pinValues;
    }
    delay(5);
}

результат летит в serial так: 

  Button-0: OFF
  Button-1: OFF
  Button-2: OFF
  Button-3: OFF
  Button-4: OFF
  Button-5: OFF
  Button-6: OFF
  Button-7: OFF
 
  Button-0: ON
  Button-1: OFF
  Button-2: OFF
  Button-3: OFF
  Button-4: OFF
  Button-5: OFF
  Button-6: OFF
  Button-7: OFF
 
как сделать что бы в serial летела лишь нажатая кнопка, а не целых 8 шт. ? 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MYFRIEND пишет:

вопрос, сделал на hc165 кнопки так

....

как сделать что бы в serial летела лишь нажатая кнопка, а не целых 8 шт. ? 

Если бы "сделал", то таких вопросов бы не было. Скопипастил?

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

ЕвгенийП пишет:

Если бы "сделал", то таких вопросов бы не было. Скопипастил?

сделал схему и вставил такой код, а как же ещё? 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

MYFRIEND пишет:

ЕвгенийП пишет:

Если бы "сделал", то таких вопросов бы не было. Скопипастил?

сделал схему и вставил такой код, а как же ещё? 

К примеру написать код самому.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, код-то Вы явно не делали. Если бы делали, то таких вопросов бы не возникало. Я лишь про это.

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

wdrakula пишет:

К примеру написать код самому.

отличная идея, пробовал, не получилось 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

wdrakula пишет:

К примеру написать код самому.

Сам код никто не пишет. Все из сети скачивают. А те, кто делает вид, что пишут - это они цену себе набивают, а сам втихаря скачивают :)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

MYFRIEND пишет:

пробовал, не получилось 

Ну, как говорится: "На нет и суда нет!"

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

ЕвгенийП пишет:

Ну, код-то Вы явно не делали. Если бы делали, то таких вопросов бы не возникало. Я лишь про это.

я явно и Arduino ide не делал, что мне теперь Arduino ide создать? 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

MYFRIEND пишет:

отличная идея, пробовал, не получилось 

Очень жаль.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Ворота пишет:

wdrakula пишет:

К примеру написать код самому.

Сам код никто не пишет. Все из сети скачивают. А те, кто делает вид, что пишут - это они цену себе набивают, а сам втихаря скачивают :)

Ну ты это ...не пали хату-то!!!

bwn
Offline
Зарегистрирован: 25.08.2014

MYFRIEND пишет:

wdrakula пишет:

К примеру написать код самому.

отличная идея, пробовал, не получилось 

А в скопипащенном разобраться, тоже не пробовали?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MYFRIEND пишет:

я явно и Arduino ide не делал, что мне теперь Arduino ide создать? 

Как хотите. Хотите - создайте, я не возражаю.

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

bwn пишет:

А в скопипащенном разобраться, тоже не пробовали?

пробовал, но не сложился код  

bwn
Offline
Зарегистрирован: 25.08.2014

А что там сложиться то должно, вы хоть номера строк приведите, которые не складываются.))))

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

Ворота пишет:

Очень жаль.

ума не приложу, есть pinValues и oldPinValues, если их сравнить и выйдет нужный результат, но сравнивать не умею 8 кнопок сразу, их вообще будет много  

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

MYFRIEND пишет:

bwn пишет:

А в скопипащенном разобраться, тоже не пробовали?

пробовал, но не сложился код  

Прости, но что от нас хочешь, в таком случае?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

wdrakula пишет:

Прости, но что от нас хочешь, в таком случае?

Как что? Чтобы мы нашли правильный код и дали ссылку, где скачать!

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

wdrakula пишет:

Прости, но что от нас хочешь, в таком случае?

от вас ничего, так как если бы знали ответили бы, что делать то с PinValues 

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

bwn пишет:

А что там сложиться то должно, вы хоть номера строк приведите, которые не складываются.))))

вот не складывается, read_shift_regs(); считали ножки, как те которые ноль не выводить не пойму  

82 void loop(){
83     // считываем значения с пинов
84     pinValues = read_shift_regs();
85     // если значения изменились, то выводим их
86     if(pinValues != oldPinValues){
87  
88       // выводим результат в монитор порта
89         display_pin_values();
90         // сохраняем текущее значение
91         oldPinValues = pinValues;
92     }
93     delay(5);
94 }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MYFRIEND пишет:

от вас ничего, так как если бы знали ответили бы, что делать то с PinValues 

Но мы (все собравшиеся), к сожалению, не знаем. Так что: Звиняйте хлопці, сала немає. :(

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

ЕвгенийП пишет:

Но мы (все собравшиеся), к сожалению, не знаем. Так что: Звиняйте хлопці, сала немає. :(

есть кто знает) он всегда пишет, это Andriano