Перейти к содержанию

глеб материкин

Members
  • Постов

    7
  • Зарегистрирован

  • Посещение

Информация

  • Город
    москва

Электроника

  • Стаж в электронике
    Менее года

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения глеб материкин

Новичок

Новичок (1/14)

  • Месяц на форуме
  • Неделя на форуме
  • Преданный

Последние значки

0

Репутация

  1. Здраствуйте ,решил ознакомится с датчиком HC-SR04 .Все подключил .Написал вот такую прошивку: #define F_CPU 16000000UL //частота #include <avr/io.h> #include <util/delay.h> #define LED 5 //пин светодиода #define echo 0 //пин приема #define trig 1 // пин передачи int ee = 0; void port_ini(void){// инициализация портов DDRC|= (1<<LED); //светодиод DDRC|= (1<<trig); DDRC&=~ (1<<echo); } int longer(){ uint16_t duration ;//переменная для хранения значения с датчика PORTC|=(1<<trig); // подаем импульс в 10 микросекунд _delay_us(20); PORTC&=~(1<<trig); while(!(PORTC&(1<<echo))) ; // засекаем время TCNT1|=0; TCCR1B|=(1<<CS11); while((PORTC&(1<<echo))) ; duration =TCNT1; //присваем время перемнной return((duration / 2) / 29.1); //высчитываем по формуле } int main(void) { port_ini(); while (1) { ee = longer(); if (ee>10){PORTC|=(1<<LED);} if(ee<5){PORTC&=~(1<<LED);} } } не работает . Не понимаю в чем проблема . Подскажите пожалуйста в чем ошибка , если не трудно
  2. Спасибо большое за ответ , но я только учусь . А так вижу что у вас отличный вариант , возьму на вооружение
  3. Спасибо всем тем кто откликнулся .Я сумел подключить еще и вторую кнопку . Вот обновленный код: #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> int main(void) { int button = 0; int button1 = 0; int i = 0; DDRC = 0xFF; DDRB = 0xFF; DDRD = 0b00000000; PORTD = 0b11111111; void segchar (unsigned char seg) { switch(seg){ case 0:PORTB = 0b0110111; PORTC = 0b0000001; break; case 1:PORTB = 0b0000001; PORTC = 0b0000001; break; case 2:PORTB = 0b1111011; PORTC = 0b0000000; break; case 3:PORTB = 0b0011011; PORTC = 0b0000001; break; case 4:PORTB = 0b0001101; PORTC = 0b0000001; break; case 5:PORTB = 0b0011110; PORTC = 0b0000001; break; case 6:PORTB = 0b0111110; PORTC = 0b0000001; break; case 7:PORTB = 0b0000011; PORTC = 0b0000001; break; case 8:PORTB = 0b0111111; PORTC = 0b0000001; break; case 9:PORTB = 0b0011111; PORTC = 0b0000001; break; case 10:PORTB = 0b0111110; break; } } while (1) { if ((PIND&(1 << PD3))==0&&button==0) { i++; _delay_ms(100); button = 1; } if (!(PIND&(1 << PD3))==0&&button==1) { _delay_ms(100); button = 0; } if ((PIND&(1 << PD4))==0&&button1==0) { i--; _delay_ms(100); button1 = 1; } if (!(PIND&(1 << PD4))==0&&button1==1) { _delay_ms(100); button1 = 0; } segchar(i); if(i>9){ i = 0;} if(i<0){ i = 9;} } }
  4. Это я уже исправил , хотя код и до этого работал. Если не трудно не могли бы подсказать как реализовать по другому ?
  5. Здраствуйте читатели форума. Относительно недавно я начал работать с микроконтроллерами . Собрав конструкцию из кнопки ,мк и одного индикатора я написал вот такой код : #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> int main(void) { int button = 0; int i =0; DDRC = 0xFF; DDRB = 0xFF; DDRD = 0x00; PORTD = 0b000001000; void segchar (unsigned char seg) { switch(seg){ case 0:PORTB = 0b0110111; PORTC = 0b0000001; break; case 1:PORTB = 0b0000001; PORTC = 0b0000001; break; case 2:PORTB = 0b1111011; PORTC = 0b0000000; break; case 3:PORTB = 0b0011011; PORTC = 0b0000001; break; case 4:PORTB = 0b0001101; PORTC = 0b0000001; break; case 5:PORTB = 0b0011110; PORTC = 0b0000001; break; case 6:PORTB = 0b0111110; PORTC = 0b0000001; break; case 7:PORTB = 0b0000011; PORTC = 0b0000001; break; case 8:PORTB = 0b0111111; PORTC = 0b0000001; break; case 9:PORTB = 0b0011111; PORTC = 0b0000001; break; case 10:PORTB = 0b0111110; break; } } while (1) { if (!PIND&&button==0) { _delay_ms(100); i++; button = 1; } if (PIND&&button==1) { _delay_ms(100); button = 0; } if (i==0) { segchar(0); } if (i==1) { segchar(1); } if (i==2) { segchar(2); } if (i==3) { segchar(3); } if (i==4) { segchar(4); } if (i==5) { segchar(5); } if (i==6) { segchar(6); } if (i==7) { segchar(7); } if (i==8) { segchar(8); } if (i==9) { segchar(9); } if (i==10) { segchar(10); } if (i==11) { i = 0; } } } Код отрабатывает только от 0 до 2 , а дальше не работает( Подскажите пожалуйста что я написал не так . Заранее спасибо )
  6. А можно ли использовать тогда Ардуино в качестве программатора ? А то я уже 2 раза покупал USBAsp с али и не один из них нормально не шил атмегу.
  7. Здраствуйте. Недавно решил заняться программированием мк. И у меня возник вопрос : можно ли прошить 8 мегу с помощью вот такого usb uart модуля https://escor.ru/catalog/interfeysnye_moduli_konvertery_preobrazovateli/modul_usb_a_shteker_uart_na_baze_pl2303_dlya_arduino/ Если можно то как ? Буду очень признателен если хоть кто то поможет .
×
×
  • Создать...