Сначала создал код для управления сервоприводами через потанциометр всё работало нормально но после добавления уз датчика с экраном сервопривод стал двигаться от изменения дистанции. вот код: #include <LiquidCrystal_I2C.h> #include <Wire.h> #include "Ultrasonic.h" #include <Servo.h> LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея Ultrasonic ultrasonic(9,8); //trigPin - 12; echoPin - 11; const int ledPin = 10; // 13 – если будете использовать встроенный в Arduino светодиод\ Servo servo1; // create servo object to control a servo Servo servo2; Servo servo3; Servo servo4; Servo servo5; int potpin1 = A10; // analog pin used to connect the potentiometer int val1; // variable to read the value from the analog pin int potpin2 = A11; // analog pin used to connect the potentiometer int val2; // variable to read the value from the analog pin int potpin3 = A12; // analog pin used to connect the potentiometer int val3; // variable to read the value from the analog pin int potpin4 = A13; // analog pin used to connect the potentiometer int val4; // variable to read the value from the analog pin int potpin5 = A14; // analog pin used to connect the potentiometer int val5; // variable to read the value from the analog pin void setup() { servo1.attach(0); // attaches the servo on pin 9 to the servo objec servo2.attach(1); servo3.attach(2); servo4.attach(3); servo5.attach(4); pinMode(ledPin, OUTPUT); // задаем светодиод - выходной пин Serial.begin(9600); // инициализация послед. порта Wire.begin(); lcd.init(); // Инициализация lcd lcd.backlight(); // Включаем подсветку lcd.print("Distance:"); //печатаем текст } void loop() { val1 = analogRead(potpin1); // reads the value of the potentiometer (value between 0 and 1023) val1 = map(val1, 0, 1023, 0, 180); // scale it for use with the servo (value between 0 and 180) servo1.write(val1); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there val2 = analogRead(potpin2); // reads the value of the potentiometer (value between 0 and 1023) val2 = map(val2, 0, 1023, 5, 180); // scale it for use with the servo (value between 0 and 180) servo2.write(val2); // sets the servo position according to the scaled value delay(15); val3 = analogRead(potpin3); // reads the value of the potentiometer (value between 0 and 1023) val3 = map(val3, 0, 1023, 0, 180); // scale it for use with the servo (value between 0 and 180) servo3.write(val3); // sets the servo position according to the scaled value delay(15); val4 = analogRead(potpin4); // reads the value of the potentiometer (value between 0 and 1023) val4 = map(val4, 0, 1023, 0, 180); // scale it for use with the servo (value between 0 and 180) servo4.write(val4); // sets the servo position according to the scaled value delay(15); val5 = analogRead(potpin5); // reads the value of the potentiometer (value between 0 and 1023) val5 = map(val5, 0, 1023, 0, 180); // scale it for use with the servo (value between 0 and 180) servo5.write(val5); // sets the servo position according to the scaled value delay(15); Serial.println(ultrasonic.Ranging(CM)); // выводим в последовательный порт lcd.setCursor(10,0); //устанавливаем курсор lcd.print(ultrasonic.Ranging(CM)); //выводим на lcd lcd.print("cm"); //печатаем текст cm lcd.print(" "); //печатаем пробелы для стирания лишних символов при увеличении разрядности значений if (ultrasonic.Ranging(CM)<20) // задаем нужную дистанцию, например менее 20 сантиметров { digitalWrite(ledPin, 1); // включаем светодиод lcd.setCursor(0,1); //устанавливаем курсор в начало первой строчки lcd.print("Attention"); //печатаем Внимание } else { digitalWrite(ledPin, 0); // иначе выключаем lcd.setCursor(0,1); //устанавливаем курсор в начало второй строчки lcd.print("Normal "); //печатаем Норма } delay(100); }
Щас придут гуру и начнут орать, что код надо загонять под значек (похожий на симку и цифру 1) 1. Что за Ардуина ? Нет ли путаницы с пинами 11 и А11, 12 и А12, 13 и А13 2. Там где аналоговый сигнал - надо вводить строчку про референс analogReference( nnnn ) - неизвестно что там записалось. 3. Возможно появилось влияние на питание потенциометров от появления дополнительных нагрузок по питанию. (хотя если потенциометры и референс АЦП запитаны с одной цепи, то влияния не должно быть по теории) 4. Желательно видеть схему, чтоб было над чем думать.
до ограниченная серия с встроенными потанциометрами увеличеным количеством портов и отдельной линией 6 вольт для сервоприводов