Forum: Mikrocontroller und Digitale Elektronik 7x5 LED cluster mit STM32F051R8


von Gerald R. (visitor)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich habe vor mit dem STM32F051R8 discovery bis zu 35 selbstwechselnde 
RGB-LEDs gleichzeitig zu schalten.

Dafür würde ich an jeden benutzten Ausgang einen 2k55 Widerstand und 
einen BC547C vor die LED hängen.
Das wäre ca. 3mA pro Ausgang, also insgesamt rund 105mA.
Laut dem was ich aus dem Datenblatt gelesen habe sollten 180mA nicht 
überschritten werden.

Ist mein absolut erstes Projekt mit Mikrocontrollern, also wenn jemand 
Verbesserungen für den Code hat nur her damit.

meine main.c
Ich habe hier als Vorlagen den Code der demo von STM genommen.
Deshalb ist die Variable noch Blinkspeed, aber blinken tut hier nichts.
Wenn mit jemand sagen könnte wie ich die Leds langsam nacheinander 
einschalten kann ohne eine Schleife zu bekommen wäre das supa ;)
1
      /* Default value for blink speed counter */
2
      if(BlinkSpeed == 6)
3
        {
4
          BlinkSpeed = 0;
5
        }
6
      }
7
    // A
8
    if(BlinkSpeed == 1)
9
    {
10
        // first reset all bits
11
      GPIO_ResetBits(GPIOA, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_15 | GPIO_Pin_14));
12
      GPIO_ResetBits(GPIOB, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_9 | GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5 | GPIO_Pin_4 | GPIO_Pin_3));
13
      GPIO_ResetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_11 | GPIO_Pin_10));
14
      GPIO_ResetBits(GPIOD, (GPIO_Pin_2));
15
      GPIO_ResetBits(GPIOF, (GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7));
16
17
    // switch the connected LEDS and the green onboard LED ON
18
    GPIO_SetBits(GPIOA, (GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_15 | GPIO_Pin_14));
19
    GPIO_SetBits(GPIOB, (GPIO_Pin_2 | GPIO_Pin_6 | GPIO_Pin_9));
20
    GPIO_SetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_11 | GPIO_Pin_10));
21
    GPIO_SetBits(GPIOF, (GPIO_Pin_4 | GPIO_Pin_7));
22
    }
23
24
    // G
25
    else if(BlinkSpeed == 2)
26
    {
27
        // first reset all bits
28
        GPIO_ResetBits(GPIOA, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_15 | GPIO_Pin_14));
29
        GPIO_ResetBits(GPIOB, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_9 | GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5 | GPIO_Pin_4 | GPIO_Pin_3));
30
        GPIO_ResetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_11 | GPIO_Pin_10));
31
        GPIO_ResetBits(GPIOD, (GPIO_Pin_2));
32
        GPIO_ResetBits(GPIOF, (GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7));
33
34
    // switch the connected LEDS and the green onboard LED ON
35
    GPIO_SetBits(GPIOA, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_14 | GPIO_Pin_15));
36
    GPIO_SetBits(GPIOB, (GPIO_Pin_9 | GPIO_Pin_12 | GPIO_Pin_5 | GPIO_Pin_10));
37
    GPIO_SetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_5 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4));
38
    GPIO_SetBits(GPIOD, (GPIO_Pin_2));
39
    GPIO_SetBits(GPIOF, (GPIO_Pin_4));
40
    }
41
42
    // S
43
    else if(BlinkSpeed == 3)
44
    {
45
      // first reset all bits
46
        GPIO_ResetBits(GPIOA, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_15 | GPIO_Pin_14));
47
        GPIO_ResetBits(GPIOB, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_9 | GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5 | GPIO_Pin_4 | GPIO_Pin_3));
48
        GPIO_ResetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_11 | GPIO_Pin_10));
49
        GPIO_ResetBits(GPIOD, (GPIO_Pin_2));
50
        GPIO_ResetBits(GPIOF, (GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7));
51
52
    // switch the connected LEDS and the green onboard LED ON
53
    GPIO_SetBits(GPIOA, (GPIO_Pin_5 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_1));
54
    GPIO_SetBits(GPIOB, (GPIO_Pin_9 | GPIO_Pin_2 | GPIO_Pin_6 | GPIO_Pin_12 | GPIO_Pin_3));
55
    GPIO_SetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_5 | GPIO_Pin_1 | GPIO_Pin_12 | GPIO_Pin_2 | GPIO_Pin_4));
56
    GPIO_SetBits(GPIOF, (GPIO_Pin_4));
57
    }
58
59
    // R
60
    else if(BlinkSpeed == 4)
61
    {
62
      // first reset all bits
63
        GPIO_ResetBits(GPIOA, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_15 | GPIO_Pin_14));
64
        GPIO_ResetBits(GPIOB, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_9 | GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5 | GPIO_Pin_4 | GPIO_Pin_3));
65
        GPIO_ResetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_11 | GPIO_Pin_10));
66
        GPIO_ResetBits(GPIOD, (GPIO_Pin_2));
67
        GPIO_ResetBits(GPIOF, (GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7));
68
69
    // switch the connected LEDS and the green onboard LED ON
70
    GPIO_SetBits(GPIOA, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_5));
71
    GPIO_SetBits(GPIOB, (GPIO_Pin_9 | GPIO_Pin_2 | GPIO_Pin_6 | GPIO_Pin_10 | GPIO_Pin_4));
72
    GPIO_SetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_1 | GPIO_Pin_12 | GPIO_Pin_2 | GPIO_Pin_11 | GPIO_Pin_3));
73
    GPIO_SetBits(GPIOF, (GPIO_Pin_4 | GPIO_Pin_7));
74
    }
75
76
    // J
77
    else if(BlinkSpeed == 5)
78
    {
79
      // first reset all bits
80
        GPIO_ResetBits(GPIOA, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_15 | GPIO_Pin_14));
81
        GPIO_ResetBits(GPIOB, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_9 | GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5 | GPIO_Pin_4 | GPIO_Pin_3));
82
        GPIO_ResetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_11 | GPIO_Pin_10));
83
        GPIO_ResetBits(GPIOD, (GPIO_Pin_2));
84
        GPIO_ResetBits(GPIOF, (GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7));
85
86
    // switch the connected LEDS and the green onboard LED ON
87
    GPIO_SetBits(GPIOA, (GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_1 | GPIO_Pin_3));
88
    GPIO_SetBits(GPIOB, (GPIO_Pin_9 | GPIO_Pin_3 | GPIO_Pin_12));
89
    GPIO_SetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_11 | GPIO_Pin_10 | GPIO_Pin_4));
90
    GPIO_SetBits(GPIOD, (GPIO_Pin_2));
91
    GPIO_SetBits(GPIOF, (GPIO_Pin_4));
92
    }
93
    else
94
    {
95
      // first reset all bits
96
        GPIO_ResetBits(GPIOA, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_15 | GPIO_Pin_14));
97
        GPIO_ResetBits(GPIOB, (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_9 | GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5 | GPIO_Pin_4 | GPIO_Pin_3));
98
        GPIO_ResetBits(GPIOC, (GPIO_Pin_9 | GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_11 | GPIO_Pin_10));
99
        GPIO_ResetBits(GPIOD, (GPIO_Pin_2));
100
        GPIO_ResetBits(GPIOF, (GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7));
101
102
        // green onboard LED ON connected to GPIOC_9 (PC9)
103
        GPIO_SetBits(GPIOC, (GPIO_Pin_9));
104
    }
105
  }
106
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.