Сгибатель кабелей , часть 1

Сгибатель кабелей , часть 1

В мире современных технологий мы все сталкиваемся с необходимостью приобретения зарядных кабелей для наших телефонов, ноутбуков и планшетов. На первый взгляд кажется очевидным, что чем дороже кабель, тем выше его качество. Однако, в моей практике однажды произошло обратное, что и вдохновило меня на создание уникального устройства — "сгибателя кабелей".

Недавно я начал изучать программирование и решил применить свои новые знания на практике. Первым шагом стало подключение сервомотора к микроконтроллеру ATmega 128, работающему на частоте 8 МГц. Я использовал цифровую серву с усилием 20 (40) кг, и смог настроить её так, чтобы она вращалась на заданный угол от +90 до -90 градусов.

Однако вскоре я понял, что это устройство, хоть и интересное, не дает полной картины о качестве кабеля. Поэтому в следующей версии я планирую добавить дисплей, кнопку для управления, функцию определения работоспособности кабеля и счетчик количества сгибаний. Это позволит более точно оценивать качество и долговечность кабелей, которые мы используем каждый день.

Исходный код моего проекта будет представлен ниже, и я надеюсь, что он вдохновит других на создание собственных инновационных решений.

define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>

#define SERVO_MIN 1000 // Минимальная ширина импульса (1 мс)
#define SERVO_MAX 2000 // Максимальная ширина импульса (2 мс)
#define SERVO_MID ((SERVO_MIN + SERVO_MAX) / 2) // Среднее значение

volatile uint32_t rotation_count = 0; // Счетчик количества поворотов

void servo_init()
{
// Настройка таймера 1 для генерации ШИМ
TCCR1A |= (1 << WGM11) | (1 << COM1A1); // Fast PWM, 10-bit
TCCR1B |= (1 << WGM12) | (1 << WGM13) | (1 << CS11); // Prescaler 8
ICR1 = 20000; // TOP значение для 20 мс периода (50 Гц)
DDRB |= (1 << PINB5); // Установка PB5 (OC1A) как выход
}

void servo_set_position(uint16_t position)
{
OCR1A = position;
}

int main(void)
{
servo_init();

while (1)
{
// Поворот сервомотора на полный угол
servo_set_position(SERVO_MIN);
_delay_ms(700); // Задержка 700 мс

// Поворот сервомотора обратно
servo_set_position(SERVO_MAX);
_delay_ms(700); // Задержка 700 мс

// Увеличение счетчика поворотов после завершения полного цикла
rotation_count++;
}

return 0;
}

Больше постов читайте по тегу «Программирование». А если хотите изучить новую профессию, посмотрите актуальные курсы от проверенных школ с реальными отзывами на сайте Пикабу Курсы.

Arduino & Pi

1.5K поста20.8K подписчика

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества