Я создаю роботизированную руку, используя гибкий датчик, сервопривод и 2 xbees.
Код приема:
#include <Servo.h>
Servo myServo;
void setup() {
Serial.begin(9600);
myServo.attach(9);
delay(5000);
myServo.write(0);
}
void loop() {
while(Serial.available()==0);
int d = Serial.read() - '0';
if(d>0)
{
int pos = map(d,0,9,0,180);
pos = constrain(pos,0,180);
myServo.write(pos);
Serial.println(d);
delay(50);
}
else
{};
}
Код передачи:
int sensorValue = 0; // значение датчика
int sensorMin = 1023; // минимальное значение датчика
int sensorMax = 0; // максимальное значение датчика
int SensorMid = 0;
const int POWER_OF_TWO_TO_AVERAGE = 6;
void setup() {
pinMode(13,OUTPUT);
Serial.begin(9600);
while (millis() < 10000) {
digitalWrite(13,HIGH);
sensorValue = analogRead(A1);
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}
SensorMid = (sensorMin + sensorMax )/2;
digitalWrite(13,LOW);
}
void loop() {
int val = map(analogRead(A1),SensorMid,sensorMax,0,9);
Serial.println(val);
delay(100);
}
Я создаю роботизированную руку и сталкиваюсь с некоторыми проблемами при переходе к стабильности сервоприводов с помощью гибкого кабеля. Я использую гибкий кабель в качестве передатчика, а сервопривод - в качестве приемника, и когда я нажимаю пальцем, мой сервопривод не работает. двигайтесь правильно.
Есть предложения?
@haas, 👍0
Обсуждение1 ответ
Не зная больше о фактической проблеме «не движется должным образом», я изначально вижу, что вы передаете значения 0–9 с помощью Serial.println()
, который отправляет байтовые данные, а также новую строку (значение ASCII 10
), поэтому ваш код RX, вероятно, получает попеременный ввод заданного значения и значения 10
, которое вычитается. из 48
(значение ASCII '0'
), map
ped и ограничивается
значением 0
.
Попробуйте изменить сценарий передачи, чтобы вместо этого вызвать Serial.print()
. Ваш получатель не заботится о том, чтобы каждое значение появлялось в новой строке — он не знает о строках.
Я имею в виду, что он не движется должным образом: когда я пытаюсь согнуть гибкий датчик, я предполагаю, что сервопривод не получает данные должным образом из-за разрешения гибкого датчика., @haas
Я думаю, что сервопривод нестабилен, потому что гибкий диск продолжает отправлять значения, даже когда я его не трогаю. Как мне решить эту проблему @jose can uc, @haas
Почему вы так думаете? Если вам нужна помощь общественности, вы должны предоставить реальные данные., @jose can u c
- Arduino - Сервомоторное управление и программное обеспечение
- Как подключиться к Arduino с помощью WiFi?
- Как заставить сервопривод вращаться на угол больше 180°
- Подключение Arduino к сервоприводу с внешним источником питания
- Мой сервопривод не работает плавно
- Бесполезная проводка коробки и код
- Почему сервопривод не перемещается по углам должным образом
- Микро сервопривод не работает с Arduino UNO
Пожалуйста, покажите свой код (минимальный, полный пример, демонстрирующий проблемы), схему подключения или схему, а также более подробное описание проблемы «не движется должным образом». В противном случае все, что кто-либо может сделать, это строить неосведомленные предположения., @jose can u c
@josecanuc, пожалуйста, обратитесь к вопросу, так как я отредактировал вопрос, @haas
Что это значит?
я нажимаю пальцем
, @jsotolaЯ использую гибкий датчик, он подает сигналы, сгибая палец @jsotola, @haas
Пробовали ли вы взять среднее значение, например, из 10 или 20 последовательных показаний? Все аналоговые сигналы содержат шум, который можно уменьшить, взяв среднее значение., @chrisl