upm  1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
Data Structures | Functions | Typedefs
Include dependency graph for my9221.h:

API Description

/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <upm_utilities.h>
#include <my9221.h>
int shouldRun = true;
void sig_handler(int signo)
{
if (signo == SIGINT)
shouldRun = false;
}
int main ()
{
signal(SIGINT, sig_handler);
// Instantiate a GroveLEDBar, we use D8 for the data, and D9 for the
// clock. We only use a single instance.
my9221_context leds = my9221_init(8, 9, 1);
if (!leds)
{
printf("my9221_init() failed\n");
return 1;
}
while (shouldRun)
{
// count up
printf("Counting up: ");
for (int i=0; i<my9221_get_max_leds(leds); i++)
{
printf("%d ", i);
my9221_set_led(leds, i, true);
upm_delay_ms(100);
}
printf("\n");
upm_delay_ms(100);
// count down
printf("Counting down: ");
for (int i=my9221_get_max_leds(leds) - 1; i>=0; i--)
{
printf("%d ", i);
my9221_set_led(leds, i, true);
upm_delay_ms(100);
}
printf("\n");
upm_delay_ms(100);
}
printf("Exiting...\n");
my9221_close(leds);
return 0;
}

Go to the source code of this file.

Data Structures

struct  _my9221_context
 

Functions

my9221_context my9221_init (int dataPin, int clockPin, int instances)
 
void my9221_close (my9221_context dev)
 
void my9221_set_auto_refresh (const my9221_context dev, bool enable)
 
void my9221_set_led (const my9221_context dev, int led, bool on)
 
void my9221_set_low_intensity_value (const my9221_context dev, int intensity)
 
void my9221_set_high_intensity_value (const my9221_context dev, int intensity)
 
void my9221_set_all (const my9221_context dev)
 
void my9221_clear_all (const my9221_context dev)
 
void my9221_refresh (const my9221_context dev)
 
int my9221_get_max_leds (const my9221_context dev)
 

Typedefs

typedef struct _my9221_contextmy9221_context
 

Function Documentation

my9221_context my9221_init ( int  dataPin,
int  clockPin,
int  instances 
)

Instantiates an MY9221 object

Parameters
dataPinData pin
clockPinClock pin
instancesNumber of daisy-chained my9221s, must be at least 1
Returns
Device context

Here is the call graph for this function:

void my9221_close ( my9221_context  dev)

MY9221 close

Parameters
devDevice context

Here is the call graph for this function:

Here is the caller graph for this function:

void my9221_set_auto_refresh ( const my9221_context  dev,
bool  enable 
)

Enable or disable auto refresh. When auto refresh is enabled, update the LED display as soon as the internal state changes. When false, the display(s) will not be updated until the refresh() method is called.

Parameters
devDevice context
enabletrue to enable auto refresh, false otherwise

Here is the caller graph for this function:

void my9221_set_led ( const my9221_context  dev,
int  led,
bool  on 
)

Set an LED to a specific on (high intensity) or off (low intensity) value.

Parameters
devDevice context
ledThe LED whose state you wish to change
ontrue to turn on the LED, false to turn the LED off

Here is the call graph for this function:

Here is the caller graph for this function:

void my9221_set_low_intensity_value ( const my9221_context  dev,
int  intensity 
)

Set the greyscale intensity of an LED in the OFF state. The intensity is a value from 0 (fully off) to 255 (fully on). This will take effect on any future LED set or clear operations.

Parameters
devDevice context
intensitya value from 0 (fully off) to 255 (fully on)

Here is the caller graph for this function:

void my9221_set_high_intensity_value ( const my9221_context  dev,
int  intensity 
)

Set the greyscale intensity of an LED in the ON state. The intensity is a value from 0 (fully off) to 255 (fully on). This will take effect on any future LED set or clear operations.

Parameters
devDevice context
intensitya value from 0 (fully off) to 255 (fully on)

Here is the caller graph for this function:

void my9221_set_all ( const my9221_context  dev)

Set all of the LEDS to the ON (high intensity value) state.

Parameters
devDevice context

Here is the call graph for this function:

Here is the caller graph for this function:

void my9221_clear_all ( const my9221_context  dev)

Set all of the LEDS to the OFF (low intensity value) state.

Parameters
devDevice context

Here is the call graph for this function:

Here is the caller graph for this function:

void my9221_refresh ( const my9221_context  dev)

Set the LED states to match the internal stored states. This is useful when auto refresh (setAutoRefresh()) is false to update the display.

Parameters
devDevice context

Here is the caller graph for this function:

int my9221_get_max_leds ( const my9221_context  dev)

Return the maximum number of LEDs present, based on the number of instances specified when the device context was initialized.

Parameters
devDevice context
Returns
The number of LEDs that can be controlled.

Typedef Documentation

typedef struct _my9221_context * my9221_context

Device context