kramann.info
© Guido Kramann

Login: Passwort:










22.6 Tests der bisher aufgebrachten Peripherie

22.6 Tests of the previously applied peripherals (EN google-translate)

22.6 Testy wcześniej stosowanych urządzeń peryferyjnych (PL google-translate)

Testperipherie für die nachfolgenden Programme: Sensor, Motor, externe Spannungsversorgung.

Bild 22.6-1: Testperipherie für die nachfolgenden Programme: Sensor, Motor, externe Spannungsversorgung.

Im folgenden werden die bisher aufgebrachten Peripherien getestet:

In the following, the previously applied peripherals are tested:

Poniżej testowane są wcześniej stosowane urządzenia peryferyjne:

  1. LED-Leiste
  2. Taster
  3. Sensoreingänge
  4. Motortreiber

1. LED-Leiste

1. LED strip

1. Pasek LED

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

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

Code 22.6-1: Lauflicht.

2. Taster

2. Taster

2. Degustator

void setup() 
{
    DDRB=255;  
    pinMode(2,INPUT);  
    digitalWrite(2,1); //Pullup-Widerstand
    pinMode(4, INPUT); 
    digitalWrite(4,1); //Pullup-Widerstand
}

void loop() 
{
    if(digitalRead(2)==LOW)
    {
        PORTB|=0b00001010;
    }
    else
    {
        PORTB&=~0b00001010;
    }

    if(digitalRead(4)==LOW)
    {
        PORTB|=0b11110000;
    }
    else
    {
        PORTB&=~0b11110000;
    }
}

Code 22.6-2: Taster.

3. Sensoreingänge

3. Sensor inputs

3. Wejścia czujników

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

void loop() 
{
  sensorwert = analogRead(2);
  PORTB=(1<<(sensorwert>>6));
  delay(50);
}
Test Sensor links, A2.

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

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

Code 22.6-3: Test Sensor rechts, A3.

1. Motortreiber

1. Motortreiber

1. Motortreiber

//Ü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
void setup() 
{
    DDRB=255;      
    pinMode(2,INPUT);  
    digitalWrite(2,1); //Pullup-Widerstand
    pinMode(4, INPUT); 
    digitalWrite(4,1); //Pullup-Widerstand

    //LINKER MOTOR
    //A5 als digitaler Ausgang, INPUT 3
    pinMode(23,OUTPUT);  
    //A0 als digitaler Ausgang, INPUT 4
    pinMode(18,OUTPUT);  
    digitalWrite(23,1); //1 eine Richtung
    digitalWrite(18,0); //0
    analogWrite(6,0);

    //RECHTER MOTOR
    //A4 als digitaler Ausgang, INPUT 2
    pinMode(22,OUTPUT);  
    //A1 als digitaler Ausgang, INPUT 1
    pinMode(19,OUTPUT);  
    digitalWrite(22,1); //1 eine Richtung
    digitalWrite(19,0); //0
    analogWrite(5,0);

    
}

void loop() 
{
    if(digitalRead(2)==LOW)
    {
        //linker Motor
        digitalWrite(23,1); //1 eine Richtung
        digitalWrite(18,0); //0
        analogWrite(6,127);

        //rechter Motor
        digitalWrite(22,1); //1 eine Richtung
        digitalWrite(19,0); //0
        analogWrite(5,127);
    }
    else if(digitalRead(4)==LOW)
    {
        //linker Motor
        digitalWrite(23,0); //0 
        digitalWrite(18,1); //1 andere Richtung
        analogWrite(6,127);

        //rechter Motor
        digitalWrite(22,0); //0 
        digitalWrite(19,1); //1 andere Richtung
        analogWrite(5,127);
    }
    else
    {
        //Beide Motore inaktiv
        //linker Motor
        digitalWrite(23,1); //1 eine Richtung
        digitalWrite(18,0); //0
        analogWrite(6,0);

        //rechter Motor
        digitalWrite(22,1); //1 eine Richtung
        digitalWrite(19,0); //0
        analogWrite(5,0);
    }
     
}

Code 22.6-4: Test Motortreiber.

Sensor-geregelte Fahrt entlang einer Wand

Sensor-controlled drive along a wall

Sterowany czujnikiem napęd wzdłuż ściany

//Ü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 stellgroesse=0;
int senden=0;
void setup() 
{
    DDRB=255;      
    pinMode(2,INPUT);  
    digitalWrite(2,1); //Pullup-Widerstand
    pinMode(4, INPUT); 
    digitalWrite(4,1); //Pullup-Widerstand

    //LINKER MOTOR
    //A5 als digitaler Ausgang, INPUT 3
    pinMode(23,OUTPUT);  
    //A0 als digitaler Ausgang, INPUT 4
    pinMode(18,OUTPUT);  
    digitalWrite(23,0); //1 eine Richtung
    digitalWrite(18,1); //0
    analogWrite(6,0);

    //RECHTER MOTOR
    //A4 als digitaler Ausgang, INPUT 2
    pinMode(22,OUTPUT);  
    //A1 als digitaler Ausgang, INPUT 1
    pinMode(19,OUTPUT);  
    digitalWrite(22,1); //1 eine Richtung
    digitalWrite(19,0); //0
    analogWrite(5,0);

    Serial.begin(9600); 
    
}

void loop() 
{
    sensorwert = analogRead(2);
    PORTB=(1<<(sensorwert>>6));     
    
    stellgroesse = (sensorwert-100);
    //linker Motor
    analogWrite(6,127-stellgroesse);    

    //rechter Motor
    analogWrite(5,127+stellgroesse);
    
        //seriell senden:
        if(stellgroesse<0)
        {
             senden = -stellgroesse;
             Serial.write('-');
        }
        else
        {
             senden = stellgroesse;
             Serial.write('+');
        }
        Serial.write(48+(senden/1000)%10);
        Serial.write(48+(senden/100)%10);
        Serial.write(48+(senden/10)%10);
        Serial.write(48+(senden/1)%10);        
        Serial.write('\r');        
        Serial.write('\n');        
    
}

Code 22.6-5: Sensor-geregelte Fahrt entlang einer Wand