Differences between revisions 1 and 19 (spanning 18 versions)
    
    
    
| 
  
   Size: 205 
  
  Comment:  
 | 
  
   Size: 5074 
  
  Comment:  
 | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 1: | Line 1: | 
| Describe mik/m0wbot here. | 
|
| Line 8: | Line 6: | 
| m0wbot | = m0wbot = m0wbot@OHM2013: [[attachment:m0wb0t_2013.ino]] {{{#!highlight cpp #define USBSERIAL 9600 #define BTGPSRATE 38400 #define SPDA 5 //Speed Control #define DIR1A 9 //Direction #define DIR2A 8 //Direction #define SPDB 3 //Speed Control #define DIR1B 12 //Direction #define DIR2B 11 //Direction #define STANDBY 10 //Standby Pin #define STATUS_LED 13 //Led Pin #define HAXXXOR 6 //spinning wheel of death ^^ macfags #define HAX0RSPEEDMIN 0 #define HAX0RSPEEDMAX 90 #define MOTA 0 #define MOTB 3 #define FORWARD 1 #define BACKWARD 2 #define STOP 3 #define CMD_DRIVE 'c' #define CMD_STOP 's' #include <Servo.h> char MOTs[] = {SPDA, DIR1A, DIR2A, SPDB, DIR1B, DIR2B}; char x,y,z; char status = CMD_STOP; Servo myservo; // create servo object to control a servo int hax0rspeed=0; int oldmillis; char readBT() { while(!Serial1.available()) delay(20); return (char)Serial1.read(); } void sendBT(char command[]) { Serial1.println(); delay(250); Serial1.print(command); delay(250); Serial1.println(); Serial1.flush(); delay(250); } void setupBT(int setupdelay) { sendBT("+STWMOD=0"); // client mode sendBT("+STNA=m0wb0t"); // device name sendBT("+STAUTO=0"); // auto connect forbidden sendBT("+STOAUT=1"); // permit paired device to connect me sendBT("+STPIN=1337"); // bluetooth pin delay(setupdelay); // This delay is required. sendBT("+INQ=1"); // enable inqure the device delay(setupdelay); // This delay is required. } void stopMotor(char mot) { setMotor(mot, STOP, 0); } void setMotor(char mot, char dir, int spd) { analogWrite (MOTs[mot + 0], spd); digitalWrite(MOTs[mot + 1], dir & 0x01); digitalWrite(MOTs[mot + 2], dir & 0x02); } void fullStop() { digitalWrite(STANDBY, LOW); digitalWrite(STATUS_LED, LOW); // indicate status stopMotor(MOTA); stopMotor(MOTB); status = CMD_STOP; } void servoup() { int pos = 0; for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(20); } } void servodown() { int pos = 180; for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(20); } } void initservo() { servoup(); delay(50); servodown(); } void setup() { pinMode( SPDA , OUTPUT ); pinMode( SPDB , OUTPUT ); pinMode( STANDBY , OUTPUT ); pinMode( STATUS_LED , OUTPUT ); pinMode( DIR1A , OUTPUT ); pinMode( DIR2A , OUTPUT ); pinMode( DIR1B , OUTPUT ); pinMode( DIR2B , OUTPUT ); myservo.attach(6); // attaches the servo on pin 6 to the servo object initservo(); fullStop(); //init's all previous outputs Serial.begin(USBSERIAL); // init USB Serial (console) Serial1.begin(BTGPSRATE); // init pin0/1 Serial (bluetooth) delay(1234); setupBT(3210); while(readBT() != CMD_STOP); // safety frist? ¯\(°_o)/¯ I DUNNO LOL } int runDelay = 0; void loop() { Serial1.print('r'); // request data from droid char bt = readBT(); if(bt == CMD_STOP) { fullStop(); } else if(bt == CMD_DRIVE) { if(status == CMD_STOP) { status = CMD_DRIVE; digitalWrite(STANDBY, HIGH); digitalWrite(STATUS_LED, HIGH); // indicate status } x = readBT(); y = readBT(); z = readBT(); int l = z + y, r = z - y; int L = (l < 0 ? -l : l)<<1; int R = (r < 0 ? -r : r)<<1; L = L > 255 ? 255 : L < 0 ? 0 : L; R = R > 255 ? 255 : R < 0 ? 0 : R; setMotor(MOTA, -l > 0 ? FORWARD : BACKWARD, L); setMotor(MOTB, -r > 0 ? FORWARD : BACKWARD, R); } if (millis()-oldmillis >20) { oldmillis=millis(); if (status==CMD_DRIVE && hax0rspeed<HAX0RSPEEDMAX){ hax0rspeed+=2; } if (status==CMD_STOP && hax0rspeed>HAX0RSPEEDMIN){ hax0rspeed--; } myservo.write(hax0rspeed); } } }}} <<arnica(album=1, album_image=IMG_0005.JPG)>> ---- CategoryProjects TagArduino  | 
m0wbot
m0wbot@OHM2013:
   1 #define USBSERIAL 9600
   2 #define BTGPSRATE 38400
   3 
   4 #define SPDA             5          //Speed Control
   5 #define DIR1A            9          //Direction
   6 #define DIR2A            8          //Direction
   7 #define SPDB             3          //Speed Control
   8 #define DIR1B           12          //Direction
   9 #define DIR2B           11          //Direction
  10 #define STANDBY         10          //Standby Pin
  11 #define STATUS_LED      13          //Led Pin
  12 
  13 #define HAXXXOR          6          //spinning wheel of death ^^ macfags
  14 #define HAX0RSPEEDMIN    0          
  15 #define HAX0RSPEEDMAX    90
  16 
  17 #define MOTA             0
  18 #define MOTB             3
  19 
  20 #define FORWARD          1
  21 #define BACKWARD         2
  22 #define STOP             3
  23 
  24 #define CMD_DRIVE       'c'
  25 #define CMD_STOP        's'
  26 
  27 #include <Servo.h> 
  28 
  29 
  30 char MOTs[] = {SPDA, DIR1A, DIR2A, SPDB, DIR1B, DIR2B};
  31 char x,y,z;
  32 char status = CMD_STOP;
  33 Servo myservo;  // create servo object to control a servo 
  34 int hax0rspeed=0;
  35 int oldmillis;
  36 
  37 char readBT() { while(!Serial1.available()) delay(20); return (char)Serial1.read(); }
  38 
  39 void sendBT(char command[]) {
  40     Serial1.println();
  41     delay(250);
  42     Serial1.print(command);
  43     delay(250);
  44     Serial1.println();
  45     Serial1.flush();
  46     delay(250);
  47 }
  48 
  49 void setupBT(int setupdelay) {
  50     sendBT("+STWMOD=0");            // client mode
  51     sendBT("+STNA=m0wb0t");         // device name
  52     sendBT("+STAUTO=0");            // auto connect forbidden
  53     sendBT("+STOAUT=1");            // permit paired device to connect me
  54     sendBT("+STPIN=1337");          // bluetooth pin 
  55     delay(setupdelay);              // This delay is required.
  56     sendBT("+INQ=1");               // enable inqure the device 
  57     delay(setupdelay);              // This delay is required.
  58 }
  59 
  60 void stopMotor(char mot) { setMotor(mot, STOP, 0); }
  61 
  62 void setMotor(char mot, char dir, int spd) {
  63     analogWrite (MOTs[mot + 0], spd);
  64     digitalWrite(MOTs[mot + 1], dir & 0x01);
  65     digitalWrite(MOTs[mot + 2], dir & 0x02);
  66 }
  67 
  68 void fullStop() {
  69     digitalWrite(STANDBY,    LOW);
  70     digitalWrite(STATUS_LED, LOW); // indicate status
  71     stopMotor(MOTA);
  72     stopMotor(MOTB);
  73     status = CMD_STOP;
  74 }
  75 
  76 void servoup() {
  77     int pos = 0;   
  78     for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  79   {                                  // in steps of 1 degree 
  80     myservo.write(pos);              // tell servo to go to position in variable 'pos' 
  81     delay(20);
  82   } 
  83 }
  84 void servodown() {
  85   int pos = 180;
  86   for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  87   {                                
  88     myservo.write(pos);              // tell servo to go to position in variable 'pos' 
  89     delay(20);
  90   }
  91 }
  92 
  93 
  94   
  95 void initservo() {
  96   servoup();
  97   delay(50);
  98   servodown(); 
  99 }
 100 
 101 void setup() {
 102     pinMode( SPDA       , OUTPUT );
 103     pinMode( SPDB       , OUTPUT );
 104     pinMode( STANDBY    , OUTPUT );
 105     pinMode( STATUS_LED , OUTPUT );
 106     pinMode( DIR1A      , OUTPUT );
 107     pinMode( DIR2A      , OUTPUT );
 108     pinMode( DIR1B      , OUTPUT );
 109     pinMode( DIR2B      , OUTPUT );
 110                          
 111     myservo.attach(6);  // attaches the servo on pin 6 to the servo object 
 112     initservo();
 113     
 114     fullStop(); //init's all previous outputs
 115     
 116     Serial.begin(USBSERIAL);        // init USB Serial (console)
 117     Serial1.begin(BTGPSRATE);       // init pin0/1 Serial (bluetooth)
 118     delay(1234); 
 119     setupBT(3210);
 120     while(readBT() != CMD_STOP);    // safety frist? ¯\(°_o)/¯ I DUNNO LOL
 121 }
 122 
 123 int runDelay = 0;
 124 void loop() {
 125     Serial1.print('r');             // request data from droid
 126     char bt = readBT();
 127     if(bt == CMD_STOP)
 128         {
 129         fullStop();
 130         }
 131     else if(bt == CMD_DRIVE) {
 132         if(status == CMD_STOP) {
 133             status = CMD_DRIVE;
 134             digitalWrite(STANDBY,    HIGH);
 135             digitalWrite(STATUS_LED, HIGH); // indicate status
 136         }
 137         x = readBT(); y = readBT(); z = readBT();
 138         int l = z + y, r = z - y;
 139         int L = (l < 0 ? -l : l)<<1;
 140         int R = (r < 0 ? -r : r)<<1;
 141         L = L > 255 ? 255 : L < 0 ? 0 : L;
 142         R = R > 255 ? 255 : R < 0 ? 0 : R;
 143         
 144         setMotor(MOTA, -l > 0 ? FORWARD : BACKWARD, L);
 145         setMotor(MOTB, -r > 0 ? FORWARD : BACKWARD, R);
 146     }
 147     if (millis()-oldmillis >20) {
 148       oldmillis=millis();
 149       if (status==CMD_DRIVE && hax0rspeed<HAX0RSPEEDMAX){
 150         hax0rspeed+=2;
 151       }    
 152       if (status==CMD_STOP && hax0rspeed>HAX0RSPEEDMIN){
 153         hax0rspeed--;
 154       }    
 155       myservo.write(hax0rspeed);
 156 
 157     }
 158 }
13 images
(fire/m0wb0t)
    
    (fire/m0wb0t)
 IMG_0005.JPG 
    2013-08-01 16:07:46
    
