пытаюсь разобраться
- Войдите на сайт для отправки комментариев
Ребята добрый день!
Пытаюсь повторить проект который есть на ютубе с открытыми исходными кодами.
Цель получить значение с прибора в сериал порт
https://www.youtube.com/watch?v=Mr_RMcncrVY
Купил анализатор логики и он мне выдал вот такой рисунок
https://yadi.sk/i/aLjdQkCUEev28Q
Прикрутил конвертор логики 3в to 5в
Проверил снова анализатором логики . сигналы те же самые со стороны 5в линии выдает. на всякий случай измерил вольтаж на сигнальных линиях - стал выше. похоже что конвертор работает.
Подключил ардуинку нано. Взял скетч автора - подрихтовал как умел - у него там под arduino due но увы знаний видимо маловато и не идут данные у меня, скетч автора для меня сложноват.
копи паст не работает тут.......
Подскажите хотя бы суть. как происходит совмещение этих двух каналов в одно число. каким образом это присходит хотя бы примерно. хочу разобраться но не знаю как к этому протоколу подойти. не разу таким не занимался
//-------------------------------------------------------------------------------------------------------------------------------------- void Scale::wantNextBit_CaliperProtocol() { // это прерывание вызывается по изменению уровня. Здесь надо понять, что мы можем начинать читать значения. uint8_t level = digitalRead(clockPin); if(level == LOW) { if(micros() - lastCaliperHighTime > 80000) // низкий уровень впервые за долгое время, это начало фрейма { // начало порции данных, подготавливаем переменные dataToRead = 0; caliperBitNumber = 0; } uint8_t readedCaliperBit = digitalRead(dataPin); dataToRead |= ( readedCaliperBit << caliperBitNumber ); caliperBitNumber++; if(caliperBitNumber == 24) // всё прочитали, сигнализируем об этом { caliperBitNumber = 0; // обнуляем счётчик бит, в следующий раз читать начнём сначала caliperDataReady = true; } } //if(level == LOW) else { // высокий уровень, запоминаем время lastCaliperHighTime = micros(); } }