kramann.info
© Guido Kramann

Login: Passwort:










25.1 Testprogramme

25.1 test programs (EN google-translate)

25.1 programy testowe (PL google-translate)

Lauflicht

chaser

pościgowy

int zustand = 0;
void setup() 
{
    DDRB=255;  
    
}

void loop() 
{
  PORTB=(1<<zustand);
  delay(400);
  zustand++;
  zustand%=8;
}

Code 25.1-1: Lauflicht.

Sensor 1 und 2 (A0 und A3)

Sensor 1 and 2 (A0 and A3)

Czujnik 1 i 2 (A0 i A3)

int sensorwert = 0;
void setup() 
{
    DDRB=255;      
}

void loop() 
{
//  sensorwert = analogRead(0); //Frontalsensor
  sensorwert = analogRead(3); //Seitensensor
  PORTB=(1<<(sensorwert>>6));
  delay(50);
}

Code 25.1-2: Sensor frontal und seitlich.

Motortest

engine Test

testowania silników

//Über die Taster wird die Richtung gewechselt.
//Zuordnung Analog zu Digital
//A0 = D18
//A1 = D19
//A2 = D20
//A3 = D21
//A4 = D22
//A5 = D23
//A6 = D24
//A7 = D25
//A8 = D26
//A9 = D27
//A10 = D28
//A11 = D29

int sensorwert = 0;

void setup() 
{
    //VORNE LINKER MOTOR
    pinMode(23,OUTPUT);  //A5
    digitalWrite(23,0);
    analogWrite(3,0);

    //VORNE RECHTER MOTOR
    pinMode(22,OUTPUT);  
    digitalWrite(22,0);
    analogWrite(5,0);

    //HINTEN LINKER MOTOR
    pinMode(7,OUTPUT);  //A5
    digitalWrite(7,0);
    analogWrite(6,0);

    //HINTEN RECHTER MOTOR
    pinMode(12,OUTPUT);  
    digitalWrite(12,0);
    analogWrite(13,0);

    
}

void motor_links_vorne(int wert)
{
    if(wert>=0)
    {
        pinMode(23,OUTPUT);  //A5
        digitalWrite(23,1);
        analogWrite(3,255-wert);
    }
    else
    {
        pinMode(23,OUTPUT);  //A5
        digitalWrite(23,0);
        analogWrite(3,-wert);
    }
}

void motor_rechts_vorne(int wert)
{
    if(wert>=0)
    {
        pinMode(22,OUTPUT);  
        digitalWrite(22,0);
        analogWrite(5,wert);
    }
    else
    {
        pinMode(22,OUTPUT);  
        digitalWrite(22,1);
        analogWrite(5,255+wert);
    }
}

//-----

void motor_links_hinten(int wert)
{
    if(wert>=0)
    {
        pinMode(7,OUTPUT);  //A5
        digitalWrite(7,1);
        analogWrite(6,255-wert);
    }
    else
    {
        pinMode(7,OUTPUT);  //A5
        digitalWrite(7,0);
        analogWrite(6,-wert);
    }
}

void motor_rechts_hinten(int wert)
{
    if(wert>=0)
    {
        pinMode(12,OUTPUT);  
        digitalWrite(12,0);
        analogWrite(13,wert);
    }
    else
    {
        pinMode(12,OUTPUT);  
        digitalWrite(12,1);
        analogWrite(13,255+wert);
    }
}

void loop() 
{
    sensorwert = analogRead(0);
    PORTB=(1<<(sensorwert>>6));     
    
    if(sensorwert>200) 
    {
        motor_links_vorne(220);      
        motor_rechts_vorne(220);      
        motor_links_hinten(220);      
        motor_rechts_hinten(220);      
    }
    else
    {
        motor_links_vorne(0);      
        motor_rechts_vorne(0);      
        motor_links_hinten(0);      
        motor_rechts_hinten(0);      
    }
}

Code 25.1-3: Motortest.

Wandregler

wall controller

kontroler ścienny

//Über die Taster wird die Richtung gewechselt.
//Zuordnung Analog zu Digital
//A0 = D18
//A1 = D19
//A2 = D20
//A3 = D21
//A4 = D22
//A5 = D23
//A6 = D24
//A7 = D25
//A8 = D26
//A9 = D27
//A10 = D28
//A11 = D29

int sensorwert = 0;
int sensorwert_frontal = 0;
int stellgroesse=0;

void setup() 
{
    DDRB=255;      
  
    //VORNE LINKER MOTOR
    pinMode(23,OUTPUT);  //A5
    digitalWrite(23,0);
    analogWrite(3,0);

    //VORNE RECHTER MOTOR
    pinMode(22,OUTPUT);  
    digitalWrite(22,0);
    analogWrite(5,0);

    //HINTEN LINKER MOTOR
    pinMode(7,OUTPUT);  //A5
    digitalWrite(7,0);
    analogWrite(6,0);

    //HINTEN RECHTER MOTOR
    pinMode(12,OUTPUT);  
    digitalWrite(12,0);
    analogWrite(13,0);

    Serial.begin(9600);
}

void motor_links_vorne(int wert)
{
    if(wert>=0)
    {
        pinMode(23,OUTPUT);  //A5
        digitalWrite(23,1);
        analogWrite(3,255-wert);
    }
    else
    {
        pinMode(23,OUTPUT);  //A5
        digitalWrite(23,0);
        analogWrite(3,-wert);
    }
}

void motor_rechts_vorne(int wert)
{
    if(wert>=0)
    {
        pinMode(22,OUTPUT);  
        digitalWrite(22,0);
        analogWrite(5,wert);
    }
    else
    {
        pinMode(22,OUTPUT);  
        digitalWrite(22,1);
        analogWrite(5,255+wert);
    }
}

//-----

void motor_links_hinten(int wert)
{
    if(wert>=0)
    {
        pinMode(7,OUTPUT);  //A5
        digitalWrite(7,1);
        analogWrite(6,255-wert);
    }
    else
    {
        pinMode(7,OUTPUT);  //A5
        digitalWrite(7,0);
        analogWrite(6,-wert);
    }
}

void motor_rechts_hinten(int wert)
{
    if(wert>=0)
    {
        pinMode(12,OUTPUT);  
        digitalWrite(12,0);
        analogWrite(13,wert);
    }
    else
    {
        pinMode(12,OUTPUT);  
        digitalWrite(12,1);
        analogWrite(13,255+wert);
    }
}

void loop() 
{
    sensorwert = analogRead(3);
    
    Serial.println(sensorwert,DEC);
    
    stellgroesse = (sensorwert-160);
    stellgroesse/=2;

    stellgroesse-=10;
    
    if(stellgroesse>45) stellgroesse=45;
    if(stellgroesse<-45) stellgroesse=-45;
    

    sensorwert_frontal = analogRead(0);

/*    
    if(sensorwert_frontal>200)
    {
        PORTB=255;
      
        motor_links_vorne(-240);      
        motor_links_hinten(240);      

        motor_rechts_vorne(240);      
        motor_rechts_hinten(-240);      
    }
    else
    {
*/      
        PORTB=(1<<(sensorwert>>6));     
        
        motor_links_vorne(210-stellgroesse);      
        motor_links_hinten(210-stellgroesse);      

        motor_rechts_vorne(210+stellgroesse);      
        motor_rechts_hinten(210+stellgroesse);      
//    }
}

Code 25.1-4: Wandregler.

Servo testen

Servo test

Test serwo

Der Servo ist bei PB7. PB7 muss deaktiviert werden.

The servo is at PB7. PB7 must be deactivate

Servo znajduje się w PB7. PB7 musi być dezaktywowan

#include<Servo.h>

Servo servo;
int sensorwert_unten = 0;

void setup() 
{
    servo.attach(11);
    servo.write(180);          
    delay(2000);
//    Serial.begin(9600);
}

void loop() 
{
  
    sensorwert_unten = analogRead(1);
    //Serial.println(sensorwert_unten,DEC);
    
    if(sensorwert_unten>400)
    {
        sensorwert_unten = analogRead(1);
        delay(50);
        if(sensorwert_unten>400)
            servo.write(0);  
        delay(50);
    }        
    else        
    {
        servo.write(180);          
        delay(50);
    }
    
}

Code 25.1-5: Servo testen.

Komplexes Zusammenspiel

Complex interaction

Złożona interakcja

//Über die Taster wird die Richtung gewechselt.
//Zuordnung Analog zu Digital
//A0 = D18
//A1 = D19
//A2 = D20
//A3 = D21
//A4 = D22
//A5 = D23
//A6 = D24
//A7 = D25
//A8 = D26
//A9 = D27
//A10 = D28
//A11 = D29

#include<Servo.h>

Servo servo;
int sensorwert_unten = 0;


int sensorwert = 0;
int sensorwert_frontal = 0;
int stellgroesse=0;

void setup() 
{
    DDRB=127;      
  
    //VORNE LINKER MOTOR
    pinMode(23,OUTPUT);  //A5
    digitalWrite(23,0);
    analogWrite(3,0);

    //VORNE RECHTER MOTOR
    pinMode(22,OUTPUT);  
    digitalWrite(22,0);
    analogWrite(5,0);

    //HINTEN LINKER MOTOR
    pinMode(7,OUTPUT);  //A5
    digitalWrite(7,0);
    analogWrite(6,0);

    //HINTEN RECHTER MOTOR
    pinMode(12,OUTPUT);  
    digitalWrite(12,0);
    analogWrite(13,0);

    Serial.begin(9600);
    
    servo.attach(11);
    servo.write(180);          
    delay(2000);    
    servo.detach();
}

void motor_links_vorne(int wert)
{
    if(wert>=0)
    {
        pinMode(23,OUTPUT);  //A5
        digitalWrite(23,1);
        analogWrite(3,255-wert);
    }
    else
    {
        pinMode(23,OUTPUT);  //A5
        digitalWrite(23,0);
        analogWrite(3,-wert);
    }
}

void motor_rechts_vorne(int wert)
{
    if(wert>=0)
    {
        pinMode(22,OUTPUT);  
        digitalWrite(22,0);
        analogWrite(5,wert);
    }
    else
    {
        pinMode(22,OUTPUT);  
        digitalWrite(22,1);
        analogWrite(5,255+wert);
    }
}

//-----

void motor_links_hinten(int wert)
{
    if(wert>=0)
    {
        pinMode(7,OUTPUT);  //A5
        digitalWrite(7,1);
        analogWrite(6,255-wert);
    }
    else
    {
        pinMode(7,OUTPUT);  //A5
        digitalWrite(7,0);
        analogWrite(6,-wert);
    }
}

void motor_rechts_hinten(int wert)
{
    if(wert>=0)
    {
        pinMode(12,OUTPUT);  
        digitalWrite(12,0);
        analogWrite(13,wert);
    }
    else
    {
        pinMode(12,OUTPUT);  
        digitalWrite(12,1);
        analogWrite(13,255+wert);
    }
}

void loop() 
{
    sensorwert = analogRead(3);
    
    Serial.println(sensorwert,DEC);
    
    stellgroesse = (sensorwert-160);
    stellgroesse/=2;

    stellgroesse-=10;
    
    if(stellgroesse>45) stellgroesse=45;
    if(stellgroesse<-45) stellgroesse=-45;
    

    sensorwert_frontal = analogRead(0);
    delay(50);
    sensorwert_unten = analogRead(1);
    delay(50);
    
    if(sensorwert_frontal>250)
    {
        PORTB=127;
      
        motor_links_vorne(-240);      
        motor_links_hinten(240);      

        motor_rechts_vorne(240);      
        motor_rechts_hinten(-240);      
    }
    else if(sensorwert_unten>400)
    {
        sensorwert_unten = analogRead(1);
        delay(50);
        if(sensorwert_unten>400)
        {
            servo.attach(11);          
            servo.write(0);  
            delay(500);
            servo.write(180);  
            delay(500);
            servo.detach();          
        }            
        delay(50);      
    }
    else
    {      
        PORTB=((1<<(sensorwert>>6)) & 127);     
        
        motor_links_vorne(210-stellgroesse);      
        motor_links_hinten(210-stellgroesse);      

        motor_rechts_vorne(210+stellgroesse);      
        motor_rechts_hinten(210+stellgroesse);      
    }
}

Code 25.1-6: Komplexes Zusammenspiel.