Multithreading Solution for A13 Temperatur, Servo, Display Roger Zuber, BZTF

Committer:
rogerzuber
Date:
Thu Sep 23 18:04:03 2021 +0000
Revision:
0:680471563758
Child:
1:12451c43fd61
Multithreading Solution A13 - Roger Zuber (BZTF)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rogerzuber 0:680471563758 1 /* mbed Microcontroller Library
rogerzuber 0:680471563758 2 * Copyright (c) 2019 ARM Limited
rogerzuber 0:680471563758 3 * SPDX-License-Identifier: Apache-2.0
rogerzuber 0:680471563758 4 */
rogerzuber 0:680471563758 5
rogerzuber 0:680471563758 6 #include "mbed.h"
rogerzuber 0:680471563758 7 #include "platform/mbed_thread.h"
rogerzuber 0:680471563758 8 #include "ShiftOut.h"
rogerzuber 0:680471563758 9
rogerzuber 0:680471563758 10 // Blinking rate in milliseconds
rogerzuber 0:680471563758 11 #define BLINKING_RATE_MS 500
rogerzuber 0:680471563758 12
rogerzuber 0:680471563758 13 ShiftOut Seg7(D8, D7, D4, D13, D12);
rogerzuber 0:680471563758 14
rogerzuber 0:680471563758 15 const char SEGMENT_MAP[] = {0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};
rogerzuber 0:680471563758 16 const char SEGMENT_SELECT[] = {0x8F,0x4F,0x2F,0x1F};
rogerzuber 0:680471563758 17
rogerzuber 0:680471563758 18 Thread Thread1;
rogerzuber 0:680471563758 19
rogerzuber 0:680471563758 20 int counter = 1234;
rogerzuber 0:680471563758 21
rogerzuber 0:680471563758 22 void Anzeige_Thread(void)
rogerzuber 0:680471563758 23 {
rogerzuber 0:680471563758 24 while (1)
rogerzuber 0:680471563758 25 {
rogerzuber 0:680471563758 26 for (int delay = 0 ; delay < 10 ; delay++) {
rogerzuber 0:680471563758 27 Seg7.write2Byte(SEGMENT_MAP[counter/1000] + (SEGMENT_SELECT[0]<<8));
rogerzuber 0:680471563758 28 Seg7.write2Byte(SEGMENT_MAP[counter%1000/100] + (SEGMENT_SELECT[1]<<8));
rogerzuber 0:680471563758 29 Seg7.write2Byte(SEGMENT_MAP[counter%100/10] + (SEGMENT_SELECT[2]<<8));
rogerzuber 0:680471563758 30 Seg7.write2Byte(SEGMENT_MAP[counter%10] + (SEGMENT_SELECT[3]<<8));
rogerzuber 0:680471563758 31 }
rogerzuber 0:680471563758 32 ThisThread::sleep_for(1);
rogerzuber 0:680471563758 33 }
rogerzuber 0:680471563758 34 }
rogerzuber 0:680471563758 35
rogerzuber 0:680471563758 36 int main()
rogerzuber 0:680471563758 37 {
rogerzuber 0:680471563758 38 // Initialise the digital pin LED1 as an output
rogerzuber 0:680471563758 39 DigitalOut led(LED1);
rogerzuber 0:680471563758 40
rogerzuber 0:680471563758 41 Thread1.start(Anzeige_Thread); // Thread starten
rogerzuber 0:680471563758 42
rogerzuber 0:680471563758 43 while (true) {
rogerzuber 0:680471563758 44 led = !led;
rogerzuber 0:680471563758 45 counter++;
rogerzuber 0:680471563758 46 thread_sleep_for(BLINKING_RATE_MS);
rogerzuber 0:680471563758 47 }
rogerzuber 0:680471563758 48 }