Difference between revisions of "Talk:Cheesoid"

From Nottinghack Wiki
Jump to navigation Jump to search
m
Line 36: Line 36:
 
* battery regulation: http://letsmakerobots.com/node/3880
 
* battery regulation: http://letsmakerobots.com/node/3880
  
 +
OK, motors tested with a two motor circuit...
 +
<syntaxhighlight lang="cpp" line="GESHI_FANCY_LINE_NUMBERS">
 +
int motor_left[] = {
 +
  2, 3};
 +
int motor_right[] = {
 +
  7, 8};
 +
const int ledPin = 13;      // LED
 +
const int switchPin = 10;    // switch input
 +
const int enablePin = 9;    // H-bridge enable pin
 +
 +
 +
// ————————————————————————— Setup
 +
void setup() {
 +
  Serial.begin(9600);
 +
  pinMode(ledPin, OUTPUT);
 +
  pinMode(switchPin, INPUT);
 +
  pinMode(enablePin, OUTPUT);
 +
 +
 +
  // Setup motors
 +
  int i;
 +
  for(i = 0; i < 2; i++){
 +
    pinMode(motor_left[i], OUTPUT);
 +
    pinMode(motor_right[i], OUTPUT);
 +
  }
 +
  check_enable();
 +
  // blink the LED 3 times. This should happen only once.
 +
  // if you see the LED blink three times, it means that the module
 +
  // reset itself,. probably because the motor caused a brownout
 +
  // or a short.
 +
  blink(ledPin, 3, 100);
 +
 +
}
 +
 +
 +
void check_enable(){
 +
  digitalWrite(enablePin, digitalRead(switchPin));
 +
}
 +
// ————————————————————————— Loop
 +
void loop() {
 +
 +
  drive_forward();
 +
  delay(1000);
 +
  motor_stop();
 +
  Serial.println("1");
 +
 +
  drive_backward();
 +
  delay(1000);
 +
  motor_stop();
 +
  Serial.println("2");
 +
 +
  turn_left();
 +
  delay(1000);
 +
  motor_stop();
 +
  Serial.println("3");
 +
 +
  turn_right();
 +
  delay(1000);
 +
  motor_stop();
 +
  Serial.println("4");
 +
 +
  motor_stop();
 +
  delay(1000);
 +
  motor_stop();
 +
  Serial.println("5");
 +
}
 +
 +
// ————————————————————————— Drive
 +
 +
void motor_stop(){
 +
  check_enable();
 +
  digitalWrite(motor_left[0], LOW);
 +
  digitalWrite(motor_left[1], LOW);
 +
 +
  digitalWrite(motor_right[0], LOW);
 +
  digitalWrite(motor_right[1], LOW);
 +
  delay(25);
 +
}
 +
 +
void drive_forward(){
 +
  check_enable();
 +
  digitalWrite(motor_left[0], HIGH);
 +
  digitalWrite(motor_left[1], LOW);
 +
 +
  digitalWrite(motor_right[0], HIGH);
 +
  digitalWrite(motor_right[1], LOW);
 +
}
 +
 +
void drive_backward(){
 +
  check_enable();
 +
  digitalWrite(motor_left[0], LOW);
 +
  digitalWrite(motor_left[1], HIGH);
 +
 +
  digitalWrite(motor_right[0], LOW);
 +
  digitalWrite(motor_right[1], HIGH);
 +
}
 +
 +
void turn_left(){
 +
  check_enable();
 +
  digitalWrite(motor_left[0], LOW);
 +
  digitalWrite(motor_left[1], HIGH);
 +
 +
  digitalWrite(motor_right[0], HIGH);
 +
  digitalWrite(motor_right[1], LOW);
 +
}
 +
 +
void turn_right(){
 +
  check_enable();
 +
  digitalWrite(motor_left[0], HIGH);
 +
  digitalWrite(motor_left[1], LOW);
 +
 +
  digitalWrite(motor_right[0], LOW);
 +
  digitalWrite(motor_right[1], HIGH);
 +
}
 +
 +
/*
 +
    blinks an LED
 +
*/
 +
void blink(int whatPin, int howManyTimes, int milliSecs) {
 +
  int i = 0;
 +
  for ( i = 0; i < howManyTimes; i++) {
 +
    digitalWrite(whatPin, HIGH);
 +
    delay(milliSecs/2);
 +
    digitalWrite(whatPin, LOW);
 +
    delay(milliSecs/2);
 +
  }
 +
}
 +
</syntaxhighlight>
 +
This sketch is a munge of http://letsmakerobots.com/node/2074 and http://itp.nyu.edu/physcomp/Labs/DCMotorControl
 +
 +
I want to have motor enable based on digital logic as this will be controlled by bumper and cliff sensors
  
 
Range Sensors
 
Range Sensors

Revision as of 03:48, 28 September 2011

  • interact with the fridge for cheese status
  • interact with the petrol pump for petrol status
  • it needs to know where they are to go and talk to them
  • the status needs to be stored and needs to be set - Xino at each?
  • it need to be able to read the status from the fridge and the petrol pump - what sort of interface? IR remote control?

Petrol status

  • just a number!

Cheese status

  • many cheese types - each with use by date
  • Primula status is "in tube"


Motor skills

OK, motors tested with a two motor circuit...

  1 int motor_left[] = {
  2   2, 3};
  3 int motor_right[] = {
  4   7, 8};
  5 const int ledPin = 13;      // LED 
  6 const int switchPin = 10;    // switch input
  7 const int enablePin = 9;    // H-bridge enable pin
  8 
  9 
 10 // ————————————————————————— Setup
 11 void setup() {
 12   Serial.begin(9600);
 13   pinMode(ledPin, OUTPUT);
 14   pinMode(switchPin, INPUT); 
 15   pinMode(enablePin, OUTPUT);
 16 
 17 
 18   // Setup motors
 19   int i;
 20   for(i = 0; i < 2; i++){
 21     pinMode(motor_left[i], OUTPUT);
 22     pinMode(motor_right[i], OUTPUT);
 23   }
 24   check_enable();
 25   // blink the LED 3 times. This should happen only once.
 26   // if you see the LED blink three times, it means that the module
 27   // reset itself,. probably because the motor caused a brownout
 28   // or a short.
 29   blink(ledPin, 3, 100);
 30 
 31 }
 32 
 33 
 34 void check_enable(){
 35   digitalWrite(enablePin, digitalRead(switchPin));
 36 }
 37 // ————————————————————————— Loop
 38 void loop() {
 39 
 40   drive_forward();
 41   delay(1000);
 42   motor_stop();
 43   Serial.println("1");
 44 
 45   drive_backward();
 46   delay(1000);
 47   motor_stop();
 48   Serial.println("2");
 49 
 50   turn_left();
 51   delay(1000);
 52   motor_stop();
 53   Serial.println("3");
 54 
 55   turn_right();
 56   delay(1000);
 57   motor_stop();
 58   Serial.println("4");
 59 
 60   motor_stop();
 61   delay(1000);
 62   motor_stop();
 63   Serial.println("5");
 64 }
 65 
 66 // ————————————————————————— Drive
 67 
 68 void motor_stop(){
 69   check_enable();
 70   digitalWrite(motor_left[0], LOW);
 71   digitalWrite(motor_left[1], LOW);
 72 
 73   digitalWrite(motor_right[0], LOW);
 74   digitalWrite(motor_right[1], LOW);
 75   delay(25);
 76 }
 77 
 78 void drive_forward(){
 79   check_enable();
 80   digitalWrite(motor_left[0], HIGH);
 81   digitalWrite(motor_left[1], LOW);
 82 
 83   digitalWrite(motor_right[0], HIGH);
 84   digitalWrite(motor_right[1], LOW);
 85 }
 86 
 87 void drive_backward(){
 88   check_enable();
 89   digitalWrite(motor_left[0], LOW);
 90   digitalWrite(motor_left[1], HIGH);
 91 
 92   digitalWrite(motor_right[0], LOW);
 93   digitalWrite(motor_right[1], HIGH);
 94 }
 95 
 96 void turn_left(){
 97   check_enable();
 98   digitalWrite(motor_left[0], LOW);
 99   digitalWrite(motor_left[1], HIGH);
100 
101   digitalWrite(motor_right[0], HIGH);
102   digitalWrite(motor_right[1], LOW);
103 }
104 
105 void turn_right(){
106   check_enable();
107   digitalWrite(motor_left[0], HIGH);
108   digitalWrite(motor_left[1], LOW);
109 
110   digitalWrite(motor_right[0], LOW);
111   digitalWrite(motor_right[1], HIGH);
112 }
113 
114 /*
115     blinks an LED
116  */
117 void blink(int whatPin, int howManyTimes, int milliSecs) {
118   int i = 0;
119   for ( i = 0; i < howManyTimes; i++) {
120     digitalWrite(whatPin, HIGH);
121     delay(milliSecs/2);
122     digitalWrite(whatPin, LOW);
123     delay(milliSecs/2);
124   }
125 }

This sketch is a munge of http://letsmakerobots.com/node/2074 and http://itp.nyu.edu/physcomp/Labs/DCMotorControl

I want to have motor enable based on digital logic as this will be controlled by bumper and cliff sensors

Range Sensors

Xino upgrades