|
- /*
- * piglow.c:
- * Very simple demonstration of the PiGlow board.
- * This uses the piGlow devLib.
- *
- * Copyright (c) 2013 Gordon Henderson.
- ***********************************************************************
- * This file is part of wiringPi:
- * https://projects.drogon.net/raspberry-pi/wiringpi/
- *
- * wiringPi is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * wiringPi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
- ***********************************************************************
- */
-
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
-
- #ifndef TRUE
- # define TRUE (1==1)
- # define FALSE (!TRUE)
- #endif
-
- #include <wiringPi.h>
- #include <piGlow.h>
-
- static void failUsage (void)
- {
- fprintf (stderr, "Usage examples:\n") ;
- fprintf (stderr, " piglow off # All off\n") ;
- fprintf (stderr, " piglow red 50 # Light the 3 red LEDs to 50%%\n") ;
- fprintf (stderr, " colours are: red, yellow, orange, green, blue and white\n") ;
- fprintf (stderr, " piglow all 75 # Light all to 75%%\n") ;
- fprintf (stderr, " piglow leg 0 25 # Light leg 0 to 25%%\n") ;
- fprintf (stderr, " piglow ring 3 100 # Light ring 3 to 100%%\n") ;
- fprintf (stderr, " piglow led 2 5 100 # Light the single LED on Leg 2, ring 5 to 100%%\n") ;
-
- exit (EXIT_FAILURE) ;
- }
-
- static int getPercent (char *typed)
- {
- int percent ;
-
- percent = atoi (typed) ;
- if ((percent < 0) || (percent > 100))
- {
- fprintf (stderr, "piglow: percent value out of range\n") ;
- exit (EXIT_FAILURE) ;
- }
- return (percent * 255) / 100 ;
- }
-
-
- /*
- * main:
- * Our little demo prgoram
- *********************************************************************************
- */
-
- int main (int argc, char *argv [])
- {
- int percent ;
- int ring, leg ;
-
- // Always initialise wiringPi:
- // Use the Sys method if you don't need to run as root
-
- wiringPiSetupSys () ;
-
- // Initialise the piGlow devLib
-
- piGlowSetup (FALSE) ;
-
- if (argc == 1)
- failUsage () ;
-
- if ((argc == 2) && (strcasecmp (argv [1], "off") == 0))
- {
- for (leg = 0 ; leg < 3 ; ++leg)
- piGlowLeg (leg, 0) ;
- return 0 ;
- }
-
- if (argc == 3)
- {
- percent = getPercent (argv [2]) ;
-
- /**/ if (strcasecmp (argv [1], "red") == 0)
- piGlowRing (PIGLOW_RED, percent) ;
- else if (strcasecmp (argv [1], "yellow") == 0)
- piGlowRing (PIGLOW_YELLOW, percent) ;
- else if (strcasecmp (argv [1], "orange") == 0)
- piGlowRing (PIGLOW_ORANGE, percent) ;
- else if (strcasecmp (argv [1], "green") == 0)
- piGlowRing (PIGLOW_GREEN, percent) ;
- else if (strcasecmp (argv [1], "blue") == 0)
- piGlowRing (PIGLOW_BLUE, percent) ;
- else if (strcasecmp (argv [1], "white") == 0)
- piGlowRing (PIGLOW_WHITE, percent) ;
- else if (strcasecmp (argv [1], "all") == 0)
- for (ring = 0 ; ring < 6 ; ++ring)
- piGlowRing (ring, percent) ;
- else
- {
- fprintf (stderr, "piglow: invalid colour\n") ;
- exit (EXIT_FAILURE) ;
- }
- return 0 ;
- }
-
- if (argc == 4)
- {
- /**/ if (strcasecmp (argv [1], "leg") == 0)
- {
- leg = atoi (argv [2]) ;
- if ((leg < 0) || (leg > 2))
- {
- fprintf (stderr, "piglow: leg value out of range\n") ;
- exit (EXIT_FAILURE) ;
- }
- percent = getPercent (argv [3]) ;
- piGlowLeg (leg, percent) ;
- }
- else if (strcasecmp (argv [1], "ring") == 0)
- {
- ring = atoi (argv [2]) ;
- if ((ring < 0) || (ring > 5))
- {
- fprintf (stderr, "piglow: ring value out of range\n") ;
- exit (EXIT_FAILURE) ;
- }
- percent = getPercent (argv [3]) ;
- piGlowRing (ring, percent) ;
- }
- return 0 ;
- }
-
- if (argc == 5)
- {
- if (strcasecmp (argv [1], "led") != 0)
- failUsage () ;
-
- leg = atoi (argv [2]) ;
- if ((leg < 0) || (leg > 2))
- {
- fprintf (stderr, "piglow: leg value out of range\n") ;
- exit (EXIT_FAILURE) ;
- }
- ring = atoi (argv [3]) ;
- if ((ring < 0) || (ring > 5))
- {
- fprintf (stderr, "piglow: ring value out of range\n") ;
- exit (EXIT_FAILURE) ;
- }
- percent = getPercent (argv [4]) ;
- piGlow1 (leg, ring, percent) ;
- return 0 ;
- }
-
- failUsage () ;
- return 0 ;
- }
-
|