Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Вопросы чайника

Страниц (17): « 1 2 [3] 4 5 6 7 8 9 ... » В конец
 

31. zatmenie - 16 Января, 2010 - 00:07:35 - перейти к сообщению
nest спасибо за помощь. Идея с одновибратором мне больше понравилась чем с компаратором. Просимулировал в протеусе, все вроде работает. теперь соберу небольшой стенд и посмотрю как будет работать в жизни.
32. zatmenie - 21 Февраля, 2010 - 21:17:41 - перейти к сообщению
Вот нужен совет. Когда кнопка PD0 = 0 что бы была случайная задержка от 0,5 до 3 сек, а после PB0 = 1. Как это сделать на Си кто знает?
33. nest - 21 Февраля, 2010 - 22:27:40 - перейти к сообщению
zatmenie пишет:
Когда кнопка PD0 = 0 что бы была случайная задержка от 0,5 до 3 сек, а после PB0 = 1
что то ничего не понял :)
34. zatmenie - 21 Февраля, 2010 - 23:04:43 - перейти к сообщению
Значит так.
if(PORTD.0==0);
{PORTB.0=1;
delay программа делает случайную задержку в диапазоне 0,5-3 сек
}
(Добавление)
Ну в общем нужно так: робот едет пока не наткнется на препятствие, потом в течении 0,5-3 сек разворачивается и снова едет
35. nest - 21 Февраля, 2010 - 23:22:35 - перейти к сообщению
а...
вот тут что то есть по случайным числам: алгоритм создания псевдослучайно го числа
36. zatmenie - 22 Февраля, 2010 - 15:57:19 - перейти к сообщению
спасибо
37. floopi - 22 Февраля, 2010 - 20:18:12 - перейти к сообщению
где можно снять микро схему L293D?
38. nest - 22 Февраля, 2010 - 21:35:12 - перейти к сообщению
floopi, в очень старых принтерах.
39. Serg5ey - 23 Февраля, 2010 - 01:18:07 - перейти к сообщению
в старинных мышах кажется тоже есть, аналог Улыбка
40. redcat - 23 Февраля, 2010 - 10:25:07 - перейти к сообщению
Зачем данный девайс в мышах?
41. ruPaladin - 23 Февраля, 2010 - 11:53:06 - перейти к сообщению

redcat пишет:
Зачем данный девайс в мышах?

Кончено же для того, чтобы его оттуда выпаять и использовать для построения простейшего робота Голливудская улыбка
42. nest - 23 Февраля, 2010 - 11:59:15 - перейти к сообщению
redcat пишет:
Зачем данный девайс в мышах?
вот тоже не верю в этот миф... не может там быть этой микросхемы.
43. zatmenie - 01 Июня, 2010 - 13:55:23 - перейти к сообщению
Всем привет. Вот появился очередной вопрос. Я сделал робота у которого 1 фоторезистор. когда на фоторезистор попадает свет робот едет вперёд, когда света нет робот разворачивается. Вот довольно просто все. Теперь хочу немного одушевить его. Итак идея вот в чем. Значит к роботу крепится голова, в глазах стоят 3 светодиода, желтый, зеленый и красный. В программу надо добавить некую штуку, например "а" значение которой при включении равно 40. Если на фоторезистор попадает свет то каждые 300 миллисекунд к нашему "а" прибавляется 1. если свет не попадает то каждые 300 миллисекунд от "а" наоборот отнимается 1. В пределах значений от 1 до 30 должна гореть красная лампочка, от 31 до 60 должна гореть желтая лампочка, а в предела от 61 до 99 должна гореть зеленая лампочка. если значение "а" больше 99 то оно сбрасывается на 75 и так все время пока робот работает. Так у нас получается настроение робота, т.е. чем больше ты с ним играешь тем о него настроение лучше. Вроде все. надеюсь объяснил понятно.


Вот нынешняя программа робота.

/*****************************************************
Chip type : ATtiny2313
Clock frequency : 4,433619 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 32
*****************************************************/

#include <tiny2313.h>
#include <stdlib.h>
#include <delay.h>
#define a
void wait0 (void)
{
TCNT0=0;
while (TCNT0<22) {};
}

// Возможные режимы движения
enum {STOP, F, B};
//------------------------------ -------------------------------- ----------------
// Включение комбинации моторов для движения в заданном направлении
//------------------------------ -------------------------------- ----------------
void go(unsigned char direction){

switch (direction) {
case STOP:
PORTB.0=0;
PORTB.1=0;
break;

case F:
PORTB.0=1;
PORTB.1=0;
break;

case B:
PORTB.0=0;
PORTB.1=1;
break;
}
}

unsigned char walk(void){
while(PIND.0==0){
if(PIND.0==0) go(F);
wait0();
if(PIND.0==1) go(B);
wait0();

}

return(0);
}

void main(void)
{
// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=P State1=P State0=P
PORTA=0x07;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
// State7=P State6=P State5=P State4=P State3=P State2=P State1=0 State0=0
PORTB=0xFC;
DDRB=0x03;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTD=0x7F;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4,330 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x05;
TCNT0=0x16;
OCR0A=0x00;
OCR0B=0x00;

while(1) walk();

}
44. zatmenie - 01 Июня, 2010 - 14:06:13 - перейти к сообщению
схема
45. ОЛЕГ - 01 Июня, 2010 - 18:36:48 - перейти к сообщению
zatmenie пишет:
Вот появился очередной вопрос.

А где вопрос? Улыбка