LV 18.04.2024 Grundlagen der Mikrocontrollertechnik 4EIT 4EMO 4MT im Sommersemester 2023
(EN google-translate)
(PL google-translate)
Themen
|
1. Lauflicht mit Auswahl
//Rotieren realisieren unsigned int arr[] = {0b1111111100000000, 0b1000000010000000, 0b1010101010101010}; unsigned int auswahl = 0; void setup() { DDRB = 0b11111111; Serial.begin(9600); } void loop() { if(Serial.available()) { auswahl = arr[Serial.read()%3]; } auswahl = ((auswahl << 1) | (auswahl >> 15)) ; PORTB = auswahl; delay(200); }
Code 0-1: Lauflicht mit Auswahl.
2. Quiz
|
3. Robo-Sumo


4. PWM Prinzip

5. PWM mit Arduino-Befehlen
//Dimmen einer LED mittels "analogWrite" void setup() { } int x=0; int y=0; void loop() { if(x<256) y=x; else y=511-x; analogWrite(9,y); x++; x%=512; delay(5); }
Code 0-2: Dimmen einer LED mittels "analogWrite"


Übung 1
|
Übung 2
|
NEU ergänzt im Sommersemester 2024, LV #4, 18.04.2024:
Themen heute:
|

Bild 0-1: Aufbau der Drehkodierer-Anzeige auf einer Laborplatine.

Musterlösung für den Drehkodierer mit Anzeige
uint8_t ziffer[] = { 0b00111111,//0 0b00000110,//1 0b01011011,//2 0b01001111,//3 0b01100110,//4 0b01101101,//5 0b01111101,//6 0b00000111,//7 0b01111111,//8 0b01101111,//9 0b01110111,//A 0b01111100,//B 0b00111001,//C 0b01011110,//D 0b01111001,//E 0b01110001//F }; void setup() { DDRB = 0b01111111; PORTB = 0b01111111; DDRF &= 0b00001111; PORTF |= 0b11110000; pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); } void loop() { DDRB = 0b01111111; PORTB = ~ziffer[(PINF>>4)]; digitalWrite(4,((PINF & 0b00010000)>>4)); digitalWrite(5,((PINF & 0b00100000)>>5)); digitalWrite(6,((PINF & 0b01000000)>>6)); digitalWrite(7,((PINF & 0b10000000)>>7)); }
Code 0-3: Drehkodierer mit Anzeige
Studentische Lösung:
uint8_t displayValue[16] = { 0b00111111, // 0 0b00000110, // 1 0b01011011, // 2 0b01001111, // 3 0b01100110, // 4 0b01101101, // 5 0b01111101, // 6 0b00000111, // 7 0b01111111, // 8 0b01101111, // 9 0b01110111, // A 0b01111100, // B 0b00111001, // C 0b01011110, // D 0b01111001, // E 0b01110001, // F }; void setup() { //explicitly tells the register B, all pins are outputs DDRB = 0xFF; // DDRF &= tells the register F, the leftmost 4 ports are inputs while not // altering the other bits DDRF &= ~((1 << PF4) | (1 << PF5) | (1 << PF6) | (1 << PF7)); // PORTF |= sets the leftmost 4 bits to activate internal pull-up PORTF |= (1 << PF4) | (1 << PF5) | (1 << PF6) | (1 << PF7); } void loop() { int switchValue = (PINF & ((1 << PF4) | (1 << PF5) | (1 << PF6) | (1 << PF7))) >> PF4; PORTB = ~(displayValue[switchValue]); }
Code 0-4: Drehkodierer mit Anzeige
ENDE NEU ergänzt im Sommersemester 2024, LV #4, 18.04.2024: