Test in codice di programmazione procedurale

0

Ho progettato e implementato, per il mio ultimo anno di università, un robot autonomo con microcontrollore per schede Arduino. Il robot vaga intorno a un'area, evita gli ostacoli e cerca di individuare gli intrusi.

Devo fare qualche test per questo progetto. Qualcuno potrebbe aiutarmi dicendo quali procedure di test posso eseguire nel codice procedurale?

L'osservazione del comportamento del robot potrebbe essere uno di questi?

Servo servoLeft;          // Define left servo
Servo servoRight;         // Define right servo
const int trigPin = 5;
const int echoPin = 2;
int buzzerPin = 6;               // choose the pin for the LED //buzzer
int inputPin = 9;              // choose the input pin (for PIR sensor)

int val = 0;  
Timer t;
boolean pirSense = false;
long xronos=0;

void setup() { 
Serial.begin(9600);
 servoLeft.attach(4);      // Set left servo to digital pin 10
 servoRight.attach(3);     // Set right servo to digital pin 9

 pinMode(buzzerPin, OUTPUT);      // declare LED as output
 pinMode(inputPin, INPUT);     // declare sensor as input

 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 t.every(30000,monitoring);
  } 

  void loop() {  
  long duration, distance;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  pinMode(echoPin, INPUT);
  duration = pulseIn(echoPin, HIGH);
  distance = microsecondsToCentimeters(duration);
   delay(100);
   Serial.println(distance);
   if (distance >= 40){
       moveForward();
     }
      else {

    stopMove();
    int x = random(0,2);  
    if(x == 0 ){ 
    turnRight();     
    delay(500);
   }
   else{
     turnLeft();       
    delay(500);
   }
  }
 t.update();
 }


 void monitoring(){
  xronos = now();
 while( xronos+5 >now() ){
  stopMove();
 delay(1000);
 pirSensor();
 }

}


  // Motion routines for forward, reverse, turns, and stop
  void reverse() {
  servoLeft.write(0);
 servoRight.write(180); 
 }

 void moveForward() {
 servoLeft.write(180);
 servoRight.write(0);
 }

  void turnRight() {
 servoLeft.write(180);
 servoRight.write(180);
  }
 void turnLeft() {
  servoLeft.write(0);
  servoRight.write(0);
  }

 void stopMove() {
 servoLeft.write(90);
 servoRight.write(90);
  }

 long microsecondsToCentimeters(long microseconds)
 {
 // The speed of sound is 340 m/s or 29 microseconds per centimeter.
 // The ping travels out and back, so to find the distance of the
 // object we take half of the distance travelled.
 return microseconds / 29 / 2;
 }
    
posta user2250119 23.04.2014 - 17:21
fonte

1 risposta

1

L'osservazione del robot è probabilmente il test più importante che puoi eseguire. Non permettere a nessuno di dirti che tutto ciò a meno di un test di integrazione completo (che è ciò che la tua osservazione è) sta testando completamente.

Tuttavia, ci sono anche framework di test unitari per Arduino .

Ci sono anche schede Pseudo-Arduino .

E ci sono anche modi per fare C pseudo-orientati, per permetterti di testare i tuoi oggetti indipendentemente.

Tutti questi probabilmente ti serviranno bene in una varietà di contesti. Comprendi le tue opzioni e scegli lo strumento migliore per il lavoro; questa è l'abilità della programmazione.

Ma non dimenticarti mai che non ci sono prove migliori di come la totalità del tuo codice funzioni come previsto. Ciò vale tanto per la scrittura di una pagina web, o un gioco o un controller di robot.

    
risposta data 23.04.2014 - 17:50
fonte

Leggi altre domande sui tag