Официальный сайт компании Arduino по адресу arduino.cc
Друзья, помогите: куда и как неправильно я вставляю один скетч в другой ?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 15/07/2019 - 19:00
Сломал голову, видимо, "замылился" глаз. Нужно, чтом свежим взором кто-то взнлянул. Суть:
Этот скетч отрабатывает штатно:
//АРДУИНО УНО Управление клапаном отбора // Переменные значения и времени считывания энкодера клапана unsigned char enc_valve_a; //Значение вывода А энкодера клапана unsigned char enc_valve_b; //Значение вывода В энкодера клапана unsigned char enc_valve_a_prev=0; //Предыдущее значение вывода А энкодера клапана unsigned long enc_valve_curr_time; //Текущая временная переменная энкодера клапана unsigned long enc_valve_loop_time; //Предыдущая временная переменная энкодера клапана int enc_valve_val; //Значение энкодера клапана //Переменные клапана volatile int valve; //Скважность клапана с шагом 1/100 от 0 до 1000 void setup() { Serial.begin(115200); //Назначаем пины for (int pin=2; pin<10;pin++) //На вход { pinMode(pin, INPUT); } for (int pin=10; pin<14;pin++) //На выход { pinMode(pin, OUTPUT); } } void loop() { // Опрос энкодера клапана enc_valve_curr_time = millis(); if(enc_valve_curr_time >= (enc_valve_loop_time + 5)) // проверяем каждые 5 мсек { enc_valve_a = digitalRead(5); // считываем состояние выхода А энкодера enc_valve_b = digitalRead(4); // считываем состояние выхода B энкодера if((!enc_valve_a) && (enc_valve_a_prev))// если состояние изменилось с положительного к нулю { if(enc_valve_b) { // выход В в полож. сост., значит вращение по часовой стрелке valve++; if(valve>100) {valve=100;} } else { // выход В в 0 сост., значит вращение против часовой стрелки valve--; if(valve<0) {valve=0;} } } enc_valve_a_prev = enc_valve_a; // сохраняем значение А для следующего цикла Serial.println(valve); // пишем значение в порт enc_valve_loop_time = enc_valve_curr_time; } }
Этот скетч тоже отрабатывает штатно
Пардон, не то нажал. Этот скетч тоже отрабатывает штатно
Но когда я пытаюсь их соединить вот так:
Энкодер выдает сплошную белиберду.
Друзья, гляньте опытным глазом: в чем причина трабла и куда я что-то не так вставил. Ей-Богу, замотался искать причину!
Заранее спасибо!!!!
Sonologist, вот от этого:
нужно избавляться. Библа вставляет паузы.
Sonologist, вот от этого:
нужно избавляться. Библа вставляет паузы.
Вот падла! Что посоветуете, сэр? Если не влом - прям кусочек скетча (наверное, с одним OneWare), а? А то затрахался....
[quote=Sonologist]
[quote=dimax]
Sonologist, вот от этого:
нужно избавляться. Библа вставляет паузы.
Вот падла! Что посоветуете, сэр? Если не влом - прям кусочек скетча (наверное, с одним OneWare), а? А то затрахался.... Ашел тут библиотечку: https://www.arduinolibraries.info/libraries/ds18-b20-events
Не взгянете на "данный проблем" (я пока настолько слаб в ардуине....)? Вдруг да пойдет? Простите за наглость, но действительно в ступоре я.... Вроде, до последнего времени все шло как надо, но тут наскочил лбом на стену (выяснилось, что стена - Даллас) :)
Да что ж такое???!!! Извините за дублирование, не хотел, само получилось....
Не взгянете на "данный проблем" (я пока настолько слаб в ардуине....)? Вдруг да пойдет? Простите за наглость, но действительно в ступоре я.... Вроде, до последнего времени все шло как надо, но тут наскочил лбом на стену (выяснилось, что стена - Даллас) :)
Вам про это давно говорили, не слушали.((( Наберите сверху в поиске: "Почистил скетч примера".
Вам про это давно говорили, не слушали.((( Наберите сверху в поиске: "Почистил скетч примера".
Старик, все правильно говорите, но... Тут беда в том, что совсем мозги съехали. Не моя профессия (лекарь я, говорят -толковый). А сделать дело хочется (типа я "продвинутый" пользователь). На VB6 уж давно бы эту задачу решил, а вот с Ардуиною пока слабо знаком. Стараюсь, но не все получается. Не ругайте старика на 7-м десятке: кой-чего уже додумывать приходится через силу, что лет тридцать назад решал на раз.
http://arduino.ru/forum/programmirovanie/pochistil-sketch-primera-raboty-s-ds18b20-iz-bibly-oneware
http://arduino.ru/forum/programmirovanie/pochistil-sketch-primera-raboty-s-ds18b20-iz-bibly-oneware
Весьма благодарен, буду там копать!
Sonologist, посадите энкодер на прерывания pcint.
Sonologist, посадите энкодер на прерывания pcint.
Спасибо, это варинт, рассмотрю.
Sonologist, вот от этого:
нужно избавляться. Библа вставляет паузы.
Спасибо, Димакс: выкинул библу, стало заменно лучше.