Narzędzia użytkownika

Narzędzia witryny


nanopi_neo

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
nanopi_neo [2020/12/15 20:13] kamilnanopi_neo [2020/12/18 09:57] (aktualna) – [Dioda RGB] kamil
Linia 4: Linia 4:
  
 Cała specyfikacja znajduje się tu: [[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO]] Cała specyfikacja znajduje się tu: [[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO]]
 +
 +==== Warto zainstalować ====
 +
 +<file>
 +apt install i2c-tools
 +</file>
  
 ==== WiringPI ==== ==== WiringPI ====
Linia 52: Linia 58:
 Sprawdzamy czy sprzęt jest wykrywany poprawnie przez bibliotekę za pomocą polecenia: Sprawdzamy czy sprzęt jest wykrywany poprawnie przez bibliotekę za pomocą polecenia:
 <file> <file>
-gpio readall+gpio readall 
 + +-----+-----+----------+------+---+-NanoPi-NEO--+------+----------+-----+-----+ 
 + | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM | 
 + +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+ 
 +             3.3V |      |    1 || 2  |        | 5V               | 
 +  12 |   8 |  GPIOA12 | ALT5 | 0 |  3 || 4  |        | 5V               | 
 +  11 |   9 |  GPIOA11 | ALT5 | 0 |  5 || 6  |        | 0v               | 
 + | 203 |   7 |  GPIOG11 |  OFF | 0 |  7 || 8  | 0 |  OFF | GPIOG6   | 15  | 198 | 
 +               0v |      |    9 || 10 | 0 |  OFF | GPIOG7   | 16  | 199 | 
 +   0 |   0 |   GPIOA0 |  OFF | 0 | 11 || 12 | 0 |  OFF | GPIOA6   | 1   | 6   | 
 +   2 |   2 |   GPIOA2 |  OFF | 0 | 13 || 14 |        | 0v               | 
 +   3 |   3 |   GPIOA3 |   IN | 1 | 15 || 16 | 0 |  OFF | GPIOG8   | 4   | 200 | 
 +             3.3v |      |   | 17 || 18 | 0 |  OFF | GPIOG9   | 5   | 201 | 
 +  64 |  12 |   GPIOC0 |  OFF | 0 | 19 || 20 |        | 0v               | 
 +  65 |  13 |   GPIOC1 |  OFF | 0 | 21 || 22 | 0 |  OFF | GPIOA1   | 6   | 1   | 
 +  66 |  14 |   GPIOC2 |  OFF | 0 | 23 || 24 | 0 |  OFF | GPIOC3   | 10  | 67  | 
 + +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+ 
 + | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM | 
 + +-----+-----+----------+------+---+-NanoPi-NEO--+------+----------+-----+-----+ 
 + 
 + +-----+----NanoPi-NEO USB/Audio-+----+ 
 + | BCM | wPi |   Name   | Mode | V | Ph | 
 + +-----+-----+----------+------+---+----+ 
 +               5V |      |   | 25 | 
 +          USB-DP1 |      |   | 26 | 
 +          USB-DM1 |      |   | 27 | 
 +          USB-DP2 |      |   | 28 | 
 +          USB-DM2 |      |   | 29 | 
 +            IR-RX |      |   | 30 | 
 +  17 |  19 |  GPIOA17 |  OFF | 0 | 31 | 
 +          PCM/I2C |      |   | 32 | 
 +          PCM/I2C |      |   | 33 | 
 +          PCM/I2C |      |   | 34 | 
 +          PCM/I2C |      |   | 35 | 
 +               0V |      |   | 36 | 
 + +-----+-----+----------+------+---+----+ 
 + 
 + +-----+----NanoPi-NEO Debug UART-+----+ 
 + | BCM | wPi |   Name   | Mode | V | Ph | 
 + +-----+-----+----------+------+---+----+ 
 +   4 |  17 |   GPIOA4 | ALT5 | 0 | 37 | 
 +   5 |  18 |   GPIOA5 | ALT5 | 0 | 38 | 
 + +-----+-----+----------+------+---+----+ 
 </file> </file>
  
Linia 66: Linia 115:
   * pin 6 - GND   * pin 6 - GND
  
-Przykładowy program, który korzysta z w/w biblioteki WiringPI mamy tu: [[https://github.com/nkundu/wiringpi-examples/blob/master/dht11.c]]+Przykładowy program, który korzysta z biblioteki WiringPI mamy tu: [[https://github.com/nkundu/wiringpi-examples/blob/master/dht11.c]]
 <file> <file>
 /* /*
Linia 173: Linia 222:
 </file> </file>
  
-Jest to nr GPIO - u mnie akurat podłączony do pinu nr 15 - co wg tabeli [[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO#Layout]] daje na GPIO nr 3.+Jest to nr portu w WiringPI. Można odczytać za pomocą polecenia: "gpio readall" - u mnie akurat podłączony do pinu nr 15 (kolumna Physical) - co daje nr 3 (kolumna wPi).
  
 Kompilujemy: Kompilujemy:
Linia 208: Linia 257:
   * pin 14 - GND   * pin 14 - GND
  
-Przykładowy program, który korzysta z w/w biblioteki WiringPI mamy tu: [[http://www.bristolwatch.com/rpi/code/i2clcd.txt]]+Przykładowy program, który korzysta z biblioteki WiringPI mamy tu: [[http://www.bristolwatch.com/rpi/code/i2clcd.txt]]
 <file> <file>
 /* /*
Linia 414: Linia 463:
 </file> </file>
  
 +Kompilujemy:
 +<file>
 +gcc -Wall -o i2clcd i2clcd.c -lwiringPi -lpthread
 +</file>
 +
 +Po uruchomieniu na wyświetlaczu powinny pojawić się napisy - jeśli się nie pojawiają to może wystarczy wyregulować ekran pokrętłem za pomocą śrubokręta.
 +
 +==== Przycisk ====
 +
 +Podłączamy wg schematu:
 +
 +{{::button.png?direct|}}
 +
 +Czyli:
 +  * pin 24 - GPIO 10
 +  * pin 20 - GND
 +
 +Przykładowy program, który korzysta z biblioteki WiringPI mamy tu: [[https://www.waveshare.com/wiki/Raspberry_Pi_Tutorial_Series:_External_Button]]
 +<file>
 +#include <stdio.h>
 +#include <wiringPi.h>
 +
 +char KEY = 10;
 +
 +int main()
 +{
 +    if (wiringPiSetup() < 0)return 1 ;
 +    // Sets the pin as input.
 +    pinMode(KEY,INPUT);
 +    // Sets the Pull-up mode for the pin.
 +    pullUpDnControl(KEY, PUD_UP);
 +    printf("Key Test Program!!!\n");
 +    while(1)
 +    {
 +        if (digitalRead(KEY) == 0)
 +        {
 +            printf ("KEY PRESS\n") ;
 +            // Returns the value read at the given pin. It will be HIGH or LOW (0 or 1).
 +            while(digitalRead(KEY) == 0)
 +                delay(100);
 +        }
 +        delay(100);
 +    }
 +}
 +</file>
 +
 +Gdzie linia:
 +<file>
 +char KEY = 10;
 +</file>
 +
 +Jest to nr portu w WiringPI. Można odczytać za pomocą polecenia: "gpio readall" - u mnie akurat podłączony do pinu nr 24 (kolumna Physical) - co daje nr 10 (kolumna wPi).
 +
 +Kompilujemy:
 +<file>
 +gcc -Wall ./button.c -o ./button  -lwiringPi -lpthread
 +</file>
 +
 +I uruchamiamy:
 +<file>
 +# ./button
 +Key Test Program!!!
 +KEY PRESS
 +KEY PRESS
 +KEY PRESS
 +KEY PRESS
 +KEY PRESS
 +KEY PRESS
 +KEY PRESS
 +^C
 +</file>
 +
 +==== Dioda ====
 +
 +Podłączamy wg schematu:
 +
 +{{::diode.png?direct|}}
 +
 +Czyli:
 +  * pin 22 - GPIO 6
 +  * pin 6 - GND (nóżka krótsza)
 +
 +Przykładowy program, który korzysta z biblioteki WiringPI mamy tu: [[https://www.waveshare.com/wiki/Raspberry_Pi_Tutorial_Series:_External_Button]]
 +<file>
 +#include <wiringPi.h>
 +
 +#define DIODE 6
 +
 +int main (void)
 +{
 +  wiringPiSetup () ;
 +  pinMode (DIODE, OUTPUT) ;
 +  for (;;)
 +  {
 +    digitalWrite (DIODE, HIGH) ; delay (500) ;
 +    digitalWrite (DIODE,  LOW) ; delay (500) ;
 +  }
 +  return 0 ;
 +}
 +</file>
 +
 +Gdzie linia:
 +<file>
 +#define DIODE 6
 +</file>
 +
 +Jest to nr portu w WiringPI. Można odczytać za pomocą polecenia: "gpio readall" - u mnie akurat podłączony do pinu nr 22 (kolumna Physical) - co daje nr 6 (kolumna wPi).
 +
 +Kompilujemy:
 +<file>
 +gcc -Wall ./diode.c -o ./diode -lwiringPi -lpthread
 +</file>
 +
 +Po uruchomieniu dioda powinna migać.
 +
 +==== Dioda RGB ====
 +
 +Podłączamy wg schematu:
 +
 +{{::diodergb.png?direct|}}
 +
 +Czyli:
 +  * pin 1 - 3,3V
 +  * pin 12 - GPIO1
 +  * pin 13 - GPIO2
 +  * pin 15 - GPIO3
 +
 +Przykładowy program, który korzysta z biblioteki WiringPI mamy tu: [[https://www.admfactory.com/rgb-led-on-raspberry-pi-using-c/]]
 +<file>
 +#include <wiringPi.h>
 +#include <softPwm.h>
 +#include <stdio.h>
 +
 +#define LedPinRed    1
 +#define LedPinGreen  2
 +#define LedPinBlue   3
 +
 +const int colors[] = {0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF, 0xFF00FF, 0xFFFFFF, 0x9400D3};
 +
 +int map(int x, int in_min, int in_max, int out_min, int out_max)
 +{
 +        return (x -in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
 +}
 +
 +void ledInit(void)
 +{
 +        softPwmCreate(LedPinRed,  0, 100);  //create a soft pwm, original duty cycle is 0Hz, range is 0~100
 +        softPwmCreate(LedPinGreen,0, 100);
 +        softPwmCreate(LedPinBlue, 0, 100);
 +}
 +
 +void ledColorSet(int color)        //set color, for example: 0xde3f47
 +{
 +        int r_val, g_val, b_val;
 +
 +        r_val = (color & 0xFF0000) >> 16;  //get red value
 +        g_val = (color & 0x00FF00) >> 8;   //get green value
 +        b_val = (color & 0x0000FF) >> 0;   //get blue value
 +
 +        r_val = map(r_val, 0, 255, 0, 100);    //change a num(0~255) to 0~100
 +        g_val = map(g_val, 0, 255, 0, 100);
 +        b_val = map(b_val, 0, 255, 0, 100);
 +
 +        softPwmWrite(LedPinRed,   100 - r_val);  //change duty cycle
 +        softPwmWrite(LedPinGreen, 100 - g_val);
 +        softPwmWrite(LedPinBlue,  100 - b_val);
 +}
 +
 +int main(void)
 +{
 +        int i;
 +
 +        if(wiringPiSetup() < 0) { //when initialize wiringPi failed, print message to screen
 +                printf("setup wiringPi failed !\n");
 +                return -1;
 +        }
 +
 +        ledInit();
 +
 +        while(1) {
 +                for(i = 0; i < sizeof(colors)/sizeof(int); i++) {
 +                        ledColorSet(colors[i]);
 +                        delay(1000);
 +                }
 +        }
 +        return 0;
 +}
 +</file>
 +
 +Gdzie linie:
 +<file>
 +#define LedPinRed    1
 +#define LedPinGreen  2
 +#define LedPinBlue   3
 +</file>
 +
 +Są to nr portów w WiringPI. Można odczytać je za pomocą polecenia: "gpio readall" - u mnie akurat podłączone do pinów nr 12, 13, 15 (kolumna Physical) - co daje nr 1, 2, 3 (kolumna wPi).
 +
 +Kompilujemy:
 +<file>
 +gcc -Wall ./diodergb.c -o ./diodergb -lwiringPi -lpthread
 +</file>
 +
 +Po uruchomieniu dioda powinna migać na różne kolory.
nanopi_neo.1608059609.txt.gz · ostatnio zmienione: 2020/12/15 20:13 przez kamil