Advertisement
cjdbuck

led4

Oct 24th, 2016
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.26 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <fcntl.h>
  6. #include <sys/mman.h>
  7.  
  8. #include "sense_led.h"
  9.  
  10. #define FILESIZE (64 * sizeof(uint16_t))
  11.  
  12. uint16_t createRGB(int r, int g, int b) {
  13.     int red = r >> 3;
  14.     int green = g >> 2;
  15.     int blue = b >> 3;
  16.     return (red << 11) | (green << 5) | blue;
  17. }
  18.  
  19. void display_ledgrid(SPGM_RGBTRIPLE* ledgrid) {
  20.     uint16_t framebufferdevice;
  21.     uint16_t *map;
  22.     uint16_t *p;
  23.  
  24.     framebufferdevice = open("/dev/fb1", O_RDWR);
  25.  
  26.     map = mmap(NULL, FILESIZE, PROT_READ | PROT_WRITE, MAP_SHARED, framebufferdevice, 0);
  27.     p = map;
  28.     memset(map, 0, FILESIZE);
  29.  
  30.     uint16_t i;
  31.    
  32.     for (i = 0; i < 64; i++) {
  33.         uint16_t red = ledgrid->rgbRed;
  34.         uint16_t green = ledgrid->rgbGreen;
  35.         uint16_t blue = ledgrid->rgbBlue;
  36.         printf("index: %d, rood: %d, groen: %d, blauw:%d\n",i,red,green,blue);
  37.         *(p + i) = createRGB(red,green,blue);
  38.         usleep(20000);
  39.         ledgrid++;
  40.     }
  41.     scanf("press enter");
  42.     for (i = 0; i < 64; i++) {
  43.         *(p + i) = createRGB(0,0,0);
  44.     }
  45.    
  46. }
  47.  
  48. int main(void) {
  49.     SPGM_RGBTRIPLE leds[64];
  50.     int j;
  51.     for (j=0;j<64;j++) {
  52.         SPGM_RGBTRIPLE led;
  53.         leds[j] = led;
  54.         leds[j].rgbRed = 0;
  55.         leds[j].rgbBlue = 0;
  56.         leds[j].rgbGreen = 255;
  57.     }
  58.    
  59.     display_ledgrid(leds);
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement