Технический форум по робототехнике.
almazkazan писал(а):но я обязательно попробую! я клей токопроводящий купил вот - чтоб проводки приклеить к выводам от дисплея часов. а потом изучу (методом тыка), то как там сигменты высвечивать.
Сергей писал(а):А в чем заключаеца проблема? Интеренет есть, гугл есть, можно тупо найти нужный исходник или МОРЕ курсов по АВР где все разжевано как раз для тебя
almazkazan писал(а): хотелось бы на Си - попроще, без шимов, юартов и т.д.
almazkazan писал(а):что делать если кнопок 5 ?
avr123.nm.ru писал(а):almazkazan писал(а):что делать если кнопок 5 ?
В программе периодически опрашивать регистр PIN-порта к которому подключены кнопки и при изменении считать что с кнопкой что-то сделали
#include <avr/io.h> //Заголовочный файл ввода-вывода
#include <util/delay.h> // А это файлик для формирования задержек
#define F_CPU 8000000UL //Сообщаем какая тактовая частота будет, в Герцах
int main (void){ //главная функция, с которой начинает работать программа
unsigned int leds[9] = { //создаём массив со значениями куда подавать единичку))))
0b00000000, //начинаем с нуля, иначе первый светодиод при переполнении счётчика гореть не будет
0b00000001, //Первый светодиод 1, остальные 0
0b00000010, //Второй светодиод 1, остальные 0, и т.д.
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000};
DDRD = 0xff; // конфигурируем пины порта D как выходы
unsigned short i; // Переменная - счётчик, будем указывать в качестве индекса массива
// Теперь самая тема:
for(i=0; i < 9; i++){ //Тут я намутил)))) т.е. перечисление у нас будет с 0 до 8, т.е. все 8 элементов будут перечислены
PORTD = leds[i]; //теперь за каждый оборот цикла будет мигать следующий светодиод
_delay_ms(250); // Задержка 250 милисекунд
if(i==8){ /*Когда счётчик 8 равен. тогда обнуляем его, при этом по неизвестной мне причине первый элемент массива - точнее 0b00000000, пропускается */
i=0;
}
}
}
#include <avr/io.h>
int main(void){
DDRD = 0xff;
DDRB = 0x00;
unsigned short i = 0;
while(1){
if(bit_is_clear(PINB,0){
switch (i){
case 0: PORTD = 0b01010101; i=1;
case 1: PORTD = 0b10000001; i=2;
.....................дальше варианты любые можна делать....................
case 4: PORTD = 0b00001010; break;
}
}
}
}
almazkazan писал(а):как динамик соединять и как на Си это обрабатывается, мы хотим чтоб этот динамик звуки издавал, или, что еще лучше, чтоб что то говорил. (тогда как этот звук разместить в АВР, или память надо соединять чтоли... как это делается вобщем?)