Talk:Cheesoid: Difference between revisions

From Nottinghack Wiki
Jump to navigation Jump to search
mNo edit summary
No edit summary
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...

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);
  }
}

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