ATtiny85 5V и использование сервопривода
У меня есть ATtiny85, который я хотел бы переместить сервопривод на I/O "4" для этого проекта.
Кажется, я не могу заставить его работать, что бы я ни делал. У меня было множество проблем с его программированием, но я добрался до того места, где он запрограммирует мигание, а также мигнет светодиод на схеме в приведенной ссылке. У меня есть сервопривод, и я чертовски уверен, что проводка правильная (когда мы будем уверены на 100%?). Я пробовал эти программы, но безуспешно:
// Trinket Servo Monster sketch
// Hardware: Adafruit Trinket (3V or 5V), micro servo, LED + resistor
// Libraries: uses Adafruit_TiCoServo library to manage servo pulses,
// even though NeoPixels are NOT being used here.
#if !defined(__AVR_ATtiny85__)
#error "This code is for ATtiny boards"
#endif
//#include <Adafruit_TiCoServo.h>
#include <ServoManager.h>
#include <avr/power.h>
// Servo parameters. Pin MUST be 1 or 4 on a Trinket. Servo position
// is specified in raw timer/counter ticks (1 tick = 0.128 milliseconds).
// Servo pulse timing is typically 1-2 ms, but can vary slightly among
// servos, so you may need to tweak these limits to match your reality.
#define SERVO_PIN 4 // Pins 1 or 4 are supported on Trinket
#define SERVO_MIN 4 // ~1 ms pulse
#define SERVO_MAX 26 // ~2 ms pulse
#define LED_PIN 0 // "Eye" LED is connected here
PrecisionServo* servo;
void setup(void) {
ServoManager::setup(1);
servo = ServoManager::createServo(4);
//servo->setSetting(SERVO_MEDIUM_ENDPOINT);
//#if (F_CPU == 16000000L)
// 16 MHz Trinket requires setting prescale for correct timing.
// This MUST be done BEFORE servo.attach()!
// clock_prescale_set(clock_div_1);
//#endif
//servo.attach(SERVO_PIN);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
}
uint32_t lastLookTime = 0; // Time of last head-turn
void loop(void) {
//unsigned long t = millis(); // Current time
// If more than 1/2 second has passed since last head turn...
servo->setTarget(0);
ServoManager::waitUntilFinished();
servo->setTarget(180);
ServoManager::waitUntilFinished();
// Unrelated to head-turn check,
if(random(10) == 0) { // there's a 1-in-10 chance...
// ...of an "eye blink":
digitalWrite(LED_PIN, LOW); // The LED turns OFF
delay(random(50, 250)); // for just a short random moment
digitalWrite(LED_PIN, HIGH); // then back ON
}
//delay(1000); // Repeat loop() about 10 times/second
}
ПОЭТОМУ я сократил масштаб и просто попытался записать максимум следующим образом:
void setup() {
pinMode(4, OUTPUT);
}
void loop() {
digitalWrite(4, HIGH);
delayMicroseconds(1000);
// 1 миллисекунда определяет сервопривод, идущий вперед
digitalWrite(4, LOW);
delay(19);
}
Но и это не сработало.
Разве сервопривод не должен двигаться только с записью в "high" и "low"?
@Perplexing Pies, 👍-1
Обсуждение1 ответ
Для перемещения сервопривода требуется ШИМ - сигнал на управляющий провод.
Эта таблица данных как бы подтверждает это...
http://www.datasheetcafe.com/sg90-datasheet-pdf-9-g-micro-servo/
- Управление сервоприводом с помощью ATtiny13A
- Как я могу управлять 2 сервоприводами отдельно с помощью джойстика на ATtiny85?
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- Связь ATtiny85 с компьютером через USB
- Получить доступ к EEPROM ATtiny с помощью кода Arduino?
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
- Tower Pro MG996R сервопривод с высоким крутящим моментом 180 °, управляющий с помощью Arduino
- Радиочастотное дистанционное управление с использованием VirtualWire на ATtiny85, работающем на частоте 8 МГц на внутреннем генераторе
нет, это не должно быть хобби серво ... в Интернете есть много учебных пособий о работе сервоприводов хобби и о том, как ими управлять, @jsotola
Можете ли вы связать? Ничто из того, что я нашел до сих пор, не помогло., @Perplexing Pies
https://duckduckgo.com/?q=arduino+хобби+servo&ia=веб, @jsotola