7x5 LED cluster mit STM32F051R8

OP #3561245
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
}
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren