Beispiel #1
0
static void doGbr (int argc, char *argv [])
{
  int channel ;

  if (argc != 3)
  {
    fprintf (stderr, "Usage: %s gbr <channel>\n", argv [0]) ;
    exit (1) ;
  }

  channel = atoi (argv [2]) ;

  if ((channel < 0) || (channel > 1))
  {
    fprintf (stderr, "%s: channel must be 0 or 1\n", argv [0]) ;
    exit (1) ;
  }

  if (gertboardSPISetup () == -1)
  {
    fprintf (stderr, "Unable to initialise the Gertboard SPI interface: %s\n", strerror (errno)) ;
    exit (1) ;
  }

  printf ("%d\n",gertboardAnalogRead (channel)) ;
}
Beispiel #2
0
static void doGbw (int argc, char *argv [])
{
  int channel, value ;

  if (argc != 4)
  {
    fprintf (stderr, "Usage: %s gbr <channel> <value>\n", argv [0]) ;
    exit (1) ;
  }

  channel = atoi (argv [2]) ;
  value   = atoi (argv [3]) ;

  if ((channel < 0) || (channel > 1))
  {
    fprintf (stderr, "%s: channel must be 0 or 1\n", argv [0]) ;
    exit (1) ;
  }

  if ((value < 0) || (value > 1023))
  {
    fprintf (stderr, "%s: value must be from 0 to 255\n", argv [0]) ;
    exit (1) ;
  }

  if (gertboardSPISetup () == -1)
  {
    fprintf (stderr, "Unable to initialise the Gertboard SPI interface: %s\n", strerror (errno)) ;
    exit (1) ;
  }

  gertboardAnalogWrite (channel, value) ;
}
Beispiel #3
0
int main ()
{
  int quietLevel, min, max ;
  int i, sum ;
  unsigned int tStart, tEnd ;

  printf ("\n") ;
  printf ("Gertboard demo: VU Meter\n") ;
  printf ("========================\n") ;

  wiringPiSetup     () ;
  gertboardSPISetup () ;

  ledPercent (0) ;
  for (i = 0 ; i < 8 ; ++i)
    pinMode (i, OUTPUT) ;

  for (bPtr = 0 ; bPtr < B_SIZE ; ++bPtr)
    buffer [bPtr] = 99 ;

  tPeriod = 1000000 / 1000 ;

  printf ("Shhhh.... ") ; fflush (stdout) ;
  delay (1000) ;
  printf ("Sampling quiet... ") ; fflush (stdout) ;

  tStart = micros () ;

  tNextSampleTime = micros () ;
  for (bPtr = 0 ; bPtr < B_SIZE ; ++bPtr)
    sample () ;

  tEnd = micros () ;

  quietLevel = 0 ;
  max =    0 ;
  min = 1024 ;
  for (i = 0 ; i < B_SIZE ; ++i)
  {
    quietLevel += buffer [i] ;
    if (buffer [i] > max) max = buffer [i] ;
    if (buffer [i] < min) min = buffer [i] ;
  }
  quietLevel /= B_SIZE ;

  printf ("Done. Quiet level is: %d [%d:%d] [%d:%d]\n", quietLevel, min, max, quietLevel - min, max - quietLevel) ;

  printf ("Time taken for %d reads: %duS\n", B_SIZE, tEnd - tStart) ;

  for (bPtr = 0 ;;)
  {
    sample () ;
    sum = 0 ;
    for (i = 0 ; i < S_SIZE ; ++i)
      sum += buffer [i] ;
    sum /= S_SIZE ;
    sum = abs (quietLevel - sum) ;
    sum = (sum * 1000) / quietLevel ;
    ledPercent (sum) ;
    if (++bPtr > S_SIZE)
      bPtr = 0 ;
  }


  return 0 ;
}