BW-Robot – Тестируем

Поворачивает практически на любой поверхности.

#include <SoftwareSerial.h>

#define Turn_on_off 2
#define LED 5

SoftwareSerial r_motor(4,3); // Передние моторы - ВСЕ РАБОТАЕТ
SoftwareSerial f_motor(13,12); // Задние моторы - ВСЕ РАБОТАЕТ

boolean prog_stat = false;

int pd2 = 0;

void setup()
{

pinMode(LED,OUTPUT);

f_motor.begin(115200);
r_motor.begin(115200);

stop_all();

digitalWrite(LED,HIGH); // Test
delay(300);
digitalWrite(LED,LOW);

}

/////////////////////////////////// Main Loop ///////////////////////

void loop()
{

pd2 = digitalRead(Turn_on_off);

if (pd2 == 1) {
delay(10);
while(digitalRead(Turn_on_off) == HIGH) delay(10);

prog_stat =! prog_stat;

if (prog_stat == true) {
digitalWrite(LED,HIGH);
forward(9,3000);
revers(9,3000);
stop_all();
left(9,4000); // 360
right(9,4000); // 360
stop_all();
digitalWrite(LED,LOW);
}
else {
digitalWrite(LED,LOW);
stop_all();
}
}

}

/////////////////////// Stop All //////////////////////

void stop_all( void ) {

f_motor.print("1F0\r");
delay(10);
f_motor.print("2F0\r");
delay(10);

r_motor.print("1F0\r");
delay(10);
r_motor.print("2F0\r");
delay(10);

}

//////////////////// Forward /////////////////////////

void forward( int speed, int wait ) {

f_motor.print("2F6\r");
delay(10);
f_motor.print("1F6\r");
delay(10);
r_motor.print("2F6\r");
delay(10);
r_motor.print("1F6\r");
delay(10);

delay(wait);

}

//////////////////// Revers //////////////////////


void revers( int speed, int wait ) {

f_motor.print("2R6\r");
delay(10);
f_motor.print("1R6\r");
delay(10);
r_motor.print("2R6\r");
delay(10);
r_motor.print("1R6\r");
delay(10);

delay(wait);

}

//////////////////// Left //////////////////////


void left( int speed, int wait ) {

f_motor.print("2F6\r");
delay(10);
f_motor.print("1R6\r");
delay(10);
r_motor.print("2R6\r");
delay(10);
r_motor.print("1F6\r");
delay(10);

delay(wait);

}

//////////////////// Right //////////////////////

void right( int speed, int wait ) {

f_motor.print("2R6\r");
delay(10);
f_motor.print("1F6\r");
delay(10);

r_motor.print("2F6\r");
delay(10);
r_motor.print("1R6\r");
delay(10);

delay(wait);

}

BW-Robot – новая платформа для робота ездящего по линии.

Основная концепция робота перевозить грузы двигаясь по линии. Основные компоненты:  Arduino Pro Atmega 168 16 Mhz (собственная разработка) Serial Motor Drivers – SparkFun.

bw-robot bw-robot1

А вот и моя Arduino Atmega32 + CP2102 (USB-UART)

my_arduino_atmega32_cp2102

                               ATMEL ATmega32
					   
                                  +---\\---+
 	   (XCK/T0) D0 PB0	01|        |40  PA0 AI7 D31 (ADC0)
 	       (T1) D1 PB1	02|        |39  PA1 AI6 D30 (ADC1)
 	(INT2/AIN0) D2 PB2	03|        |38  PA2 AI5 D29 (ADC2)
 	 (OC0/AIN1) D3 PB3	04|        |37  PA3 AI4 D28 (ADC3)
	       (SS) D4 PB4	05|        |36  PA4 AI3 D27 (ADC4)
	     (MOSI) D5 PB5	06|        |35  PA5 AI2 D26 (ADC5)
	     (MISO) D6 PB6	07|        |34  PA6 AI1 D25 (ADC6)
	      (SCK) D7 PB7	08|        |33  PA7 AI0 D24 (ADC7)
                   RESET	09|        |32  AREF
                     VCC	10|        |31  GND
                     GND	11|        |30  AVCC
                   XTAL2	12|        |29  PC7 D23 (TOSC2)
                   XTAL1	13|        |28  PC6 D22 (TOSC1)
            (RXD) D8 PD0	14|        |27  PC5 D21 (TDI)
            (TXD) D9 PD1	15|        |26  PC4 D20 (TDO)
          (INT0) D10 PD2	16|        |25  PC3 D19 (TMS)
          (INT1) D11 PD3	17|        |24  PC2 D18 (TCK)
          (OC1B) D12 PD4	18|        |23  PC1 D17 (SDA)
          (OC1A) D13 PD5	19|        |22  PC0 D16 (SCL)
          (ICP1) D14 PD6	20|        |21  PD7 D15 (OC2)
                                  +--------+

 

Arduino на Atmega32A – 16 Mhz – собрал вот такую Ардуинку,  залил туда bootloader Arduino. Все отлично работает. Собрал также USB-UART модуль на CP2102.

Источник: http://www.instructables.com/id/Using-Atmega32-with-Arduino-IDE/

  1. Download project https://github.com/eaconner/ATmega32-Arduino/archive/master.zip or zip file attached to this instructables.
  2. Locate file boards.txt in arduino folder …arduino-1.5.2\hardware\arduino\avr\boards.txt
  3. Append information from zip archive boards.txt to original boards.txt
  4. Make a folder named mega32 in …arduino-1.5.2\hardware\arduino\avr\variants
  5. Copy file pins_arduino.h from the zip into folder created at step 4.
  6. Start Arduino IDE and select board.
  7. Select programmer

ATmega32-Arduino-master

mega32-16.name=ATmega32-External 16mhz
mega32-16.upload.protocol=arduino
mega32-16.upload.speed=19200
mega32-16.upload.maximum_size=32000
mega32-16.build.mcu=atmega32
mega32-16.build.f_cpu=16000000L
mega32-16.build.core=arduino:arduino
mega32-16.build.variant=mega32
mega32-16.bootloader.low_fuses=0xEF
mega32-16.bootloader.high_fuses=0x89