Без описания |
Поиск в теме | Версия для печати |
OIIO |
Отправлено: 26 Мая, 2011 - 12:17:24
|
Рядовой
Сообщений всего: 12
Дата рег-ции: Май 2011
|
Здравствуйте.
После курсов ШАГ ЗА ШАГОМ, работающий простой робот меня, очень порадовал.
И мне захотелось сделать еще одну «игрушку», только уже, немножечко сложней.
Что это из себя, представляет, есть пять китайских моторчиков, которые управляют типа «пальцами», микроконтроллер ATMega8-16PU, драйвер двигателей после прошлых опытов L293D, и из-за того что такие кончились в Радиомастере, пришлось взять еще 3 – TA7291P.
Все это соответствующим образом соединено и к другой стороне МК крепятся кнопки, один ряд из 5-и клавиш, свершу, другой снизу. При нажатии ряда кнопок сверху моторчики крутятся в одну сторону и пальчики сжимаются, при нажатии ряда кнопок снизу соответственно разжимаются.
Все делал по аналогии с уроками представленными на этом же сайте, но работать не хочет
(Добавление)
Прикрепил файл в архиве Q.rar как это приблизительно выглядит, могу прикрепить и отрисовку печатной платы
(Добавление)
Когда, подключаю питание, и нажимаю на кнопки, моторчики гудят, непонятно, и наапряжение на них идет всего лиш порядка 2х вольт, почему не знаю
Скачать файл: Q.rarСкачан раз: 271 |
|
|
OIIO |
Отправлено: 26 Мая, 2011 - 19:30:11
|
Рядовой
Сообщений всего: 12
Дата рег-ции: Май 2011
|
Решил, убрать все ветвления, и сделать проверку одним ЕСЛИ
#define F_CPU 1000000UL // указываем частоту в герцах
#include <avr/io.h>
#include <util/delay.h>
int main(void) // начало основной программы
{
DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
DDRD = 0x00; // все выводы порта D сконфигурировать как входы
DDRB = 0xfc; // все выводы порта B сконфигурировать как выходы, кроме PB6, PB7 - которые конфигурируются как входы
PORTD = 0xff; // установить "1" на всех выводах порта D
PORTB = 0X83; // установить "1" на выводе B6, B7 порта B
// включаем подтягивающие резисторы
while (1) { // Бесконечный цикл
// ПРОВЕРЯЕМ СИГНАЛЫ НИЗКОГО УРОНЯ ОТ КРАСНЫХ КНОПОК
if(!(PIND & (1<<PIND0))) // проверить "0" на линии 0 порта D
{
// ---------- вращаем моторы вперед ----------
PORTC |= _BV(PC4); // установить "1" на линии 4 порта C
PORTC &= ~_BV(PC5); // установить "0" на линии 5 порта C
}
} // закрывающая скобка бесконечного цикла
} // закрывающая скобка основной программы
Вообщем говоря, получается, что вот нажал я кнопочку которая подключена к PIND0, соответственно получил низкий уровень на PD0, условие выполнилось, и на портах PC4 установилось лог 1, а на PC5 лог 0.
Двигатель все равно не работает, замеряю напряжение на нем, оно равно 2V, а нужно 5V, чтоб он крутился. Почему на двигатель идет не 5вольт, пнять не могу.
Неужели я что то, делаю не правильно в коде, или всетаки схема не верна?
(Добавление)
Ни чего не понимаю, делаю по аналогии с уроками как в ШАГ ЗА ШАГОМ |
|
|
|
Поиск в теме | Версия для печати |
Страниц (2): [1] 2 » |
« Электронная мастерская » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|