kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Bau eines Autonomen Schwarmvehikels

(EN google-translate)

(PL google-translate)

Um den Motortreiber zwischen den Pins des Arduino-Micro unterzubringen, muß es möglich sein, die Pins A0 bis A5 auch als digitale Ausgänge zu verwenden.

Hierzu ein Test:

int zustand = 0;
//A0 = D18
//A1 = D19
//A2 = D20
//A3 = D21
//A4 = D22
//A5 = D23
//A6 = D24
//A7 = D25
//A8 = D26
//A9 = D27
//A10 = D28
//A11 = D29
void setup() 
{
  pinMode(18,OUTPUT);  
  pinMode(19,OUTPUT);  
  //pinMode(3,OUTPUT);  
  //tone(3,710);
  
  
}

void loop() 
{
  digitalWrite(18,1);    
  digitalWrite(19,1);    
  delay(800);
  digitalWrite(18,0);    
  digitalWrite(19,0);    
  delay(800);
}

Code 0-1: Testweise Pin A0 und A1 als digitale Ausgänge verwenden.

Basisprogramm - alles inaktiv, LED D13 blinkt

int zustand = 0;
//A0 = D18
//A1 = D19
//A2 = D20
//A3 = D21
//A4 = D22
//A5 = D23
//A6 = D24
//A7 = D25
//A8 = D26
//A9 = D27
//A10 = D28
//A11 = D29
void setup() 
{
  pinMode(18,INPUT);  //A0
  pinMode(19,INPUT);  //A1  
  pinMode(20,INPUT);  //A2  
  pinMode(21,INPUT);  //A3  
  pinMode(22,INPUT);  //A4  
  pinMode(23,INPUT);  //A5

  pinMode(2,INPUT);  //D2
  pinMode(3,INPUT);  //D3
  pinMode(4,INPUT);  //D4
  pinMode(5,INPUT);  //D5
  pinMode(6,INPUT);  //D6
  pinMode(7,INPUT);  //D7
  pinMode(8,INPUT);  //D8
  pinMode(9,INPUT);  //D9
  
  pinMode(13,OUTPUT); //LED  
}

void loop() 
{
  digitalWrite(13,1);    
  delay(500);
  digitalWrite(13,0);    
  delay(500);
}

Code 0-2: Basisprogramm - alles inaktiv, LED D13 blinkt

Analoge Werte lesen und auf die serielle Schnittstelle schreiben

int sensorwert=0;
//A0 = D18
//A1 = D19
//A2 = D20
//A3 = D21
//A4 = D22
//A5 = D23
//A6 = D24
//A7 = D25
//A8 = D26
//A9 = D27
//A10 = D28
//A11 = D29
void setup() 
{
  pinMode(18,INPUT);  //A0
  pinMode(19,INPUT);  //A1  
  pinMode(20,INPUT);  //A2  
  pinMode(21,INPUT);  //A3  
  pinMode(22,INPUT);  //A4  
  pinMode(23,INPUT);  //A5

  pinMode(2,INPUT);  //D2
  pinMode(3,INPUT);  //D3
  pinMode(4,INPUT);  //D4
  pinMode(5,INPUT);  //D5
  pinMode(6,INPUT);  //D6
  pinMode(7,INPUT);  //D7
  pinMode(8,INPUT);  //D8
  pinMode(9,INPUT);  //D9
  
  pinMode(13,OUTPUT); //LED 
 
  Serial.begin(9600);   

  //LINKER MOTOR:
  
}

void loop() 
{
  sensorwert = analogRead(11);
 
  Serial.write(48+(sensorwert/1000)%10);
  Serial.write(48+(sensorwert/100)%10);
  Serial.write(48+(sensorwert/10)%10);
  Serial.write(48+(sensorwert/1)%10);
  Serial.write('
');
  Serial.write('
');
  
  digitalWrite(13,1);    
  delay(250);
  digitalWrite(13,0);    
  delay(250);
}

Code 0-3: Analoge Werte lesen und auf die serielle Schnittstelle schreiben

Vorwärtsfahrt-Test

int sensorwert=0;
//A0 = D18
//A1 = D19
//A2 = D20
//A3 = D21
//A4 = D22
//A5 = D23
//A6 = D24
//A7 = D25
//A8 = D26
//A9 = D27
//A10 = D28
//A11 = D29
void setup() 
{
  pinMode(18,INPUT);  //A0
  pinMode(19,INPUT);  //A1  
  pinMode(20,INPUT);  //A2  
  pinMode(21,INPUT);  //A3  
  pinMode(22,INPUT);  //A4  
  pinMode(23,INPUT);  //A5

  pinMode(2,INPUT);  //D2
  pinMode(3,INPUT);  //D3
  pinMode(4,INPUT);  //D4
  pinMode(5,INPUT);  //D5
  pinMode(6,INPUT);  //D6
  pinMode(7,INPUT);  //D7
  pinMode(8,INPUT);  //D8
  pinMode(9,INPUT);  //D9
  
  pinMode(13,OUTPUT); //LED 
 
  Serial.begin(9600);   

  //Rechte Motorseite:
  pinMode(10,OUTPUT);  //Enable 1, L293_PIN1
  pinMode(8,OUTPUT);   //Input 2, L293_PIN7
  pinMode(3,OUTPUT);   //Input 1, L293_PIN2
  
  digitalWrite(3,1);    
  digitalWrite(8,0);    
  analogWrite(10,0);
  
  //Linke Motorseite:
  pinMode(13,OUTPUT);  //Enable 2, L293_PIN9
  pinMode(19,OUTPUT);   //A1 Input 3, L293_PIN15
  pinMode(11,OUTPUT);   //Input 4, L293_PIN10
  
  digitalWrite(19,1);    
  digitalWrite(11,0);    
  analogWrite(13,0);
  
}

void loop() 
{
  sensorwert = analogRead(11);
 
  Serial.write(48+(sensorwert/1000)%10);
  Serial.write(48+(sensorwert/100)%10);
  Serial.write(48+(sensorwert/10)%10);
  Serial.write(48+(sensorwert/1)%10);
  Serial.write('
');
  Serial.write('
');
  
  digitalWrite(13,1);    
  analogWrite(10,0);
  analogWrite(13,255);
  delay(250);
  digitalWrite(13,0);    
  analogWrite(10,255);
  analogWrite(13,0);  
  delay(250);
}

Code 0-4: Vorwärtsfahrt-Test

An einer Wand entlang fahren

int sensorwert=0;
int regler=0;
//A0 = D18
//A1 = D19
//A2 = D20
//A3 = D21
//A4 = D22
//A5 = D23
//A6 = D24
//A7 = D25
//A8 = D26
//A9 = D27
//A10 = D28
//A11 = D29
void setup() 
{
  pinMode(18,INPUT);  //A0
  pinMode(19,INPUT);  //A1  
  pinMode(20,INPUT);  //A2  
  pinMode(21,INPUT);  //A3  
  pinMode(22,INPUT);  //A4  
  pinMode(23,INPUT);  //A5

  pinMode(2,INPUT);  //D2
  pinMode(3,INPUT);  //D3
  pinMode(4,INPUT);  //D4
  pinMode(5,INPUT);  //D5
  pinMode(6,INPUT);  //D6
  pinMode(7,INPUT);  //D7
  pinMode(8,INPUT);  //D8
  pinMode(9,INPUT);  //D9
  
  pinMode(13,OUTPUT); //LED 
 
//  Serial.begin(9600);   

  //Rechte Motorseite:
  pinMode(10,OUTPUT);  //Enable 1, L293_PIN1
  pinMode(8,OUTPUT);   //Input 2, L293_PIN7
  pinMode(3,OUTPUT);   //Input 1, L293_PIN2
  
  digitalWrite(3,1);    
  digitalWrite(8,0);    
  analogWrite(10,0);
  
  //Linke Motorseite:
  pinMode(13,OUTPUT);  //Enable 2, L293_PIN9
  pinMode(19,OUTPUT);   //A1 Input 3, L293_PIN15
  pinMode(11,OUTPUT);   //Input 4, L293_PIN10
  
  digitalWrite(19,1);    
  digitalWrite(11,0);    
  analogWrite(13,0);
  
}

void loop() 
{
  sensorwert = analogRead(11);
 
  regler = 250-sensorwert;

  if(regler>100)
      regler=100;
  else if(regler<-100)    
      regler=-100;
  regler/=32;  
  /*
  Serial.write(48+(sensorwert/1000)%10);
  Serial.write(48+(sensorwert/100)%10);
  Serial.write(48+(sensorwert/10)%10);
  Serial.write(48+(sensorwert/1)%10);
  Serial.write('
');
  Serial.write('
');
  */
  //digitalWrite(13,1);    
  analogWrite(13,255-regler);
  
  //digitalWrite(13,0);    
  analogWrite(10,255+regler);
  
  delay(10);
  
}

Code 0-5: An einer Wand entlang fahren