A good cents exit survey

Stuck Pennies

The stuck function (Listing 6) alerts the staff that a penny is stuck in a slot by displaying the slot number in which a penny is stuck and flashing the backlight. Line 2 clears the entire display, instead of just the second line, as in the other cases; then, I output the STUCK PENNY message (line 3), move to the second line of the display (line 4), and show the offending slot number (line 5).

Listing 6

The stuck Function

 

Now that the display is showing the proper warning message, I get the user's attention by flashing the backlight in an infinite loop (line 7). In each iteration, I check GPIO.input(slot) (line 8). If it equals 1, the jam has been cleared and I break out of the loop; otherwise, I turn the backlight off and on, with a quarter second pause between states (lines 9-12).

Once the jam is cleared, the false counts are decremented, the backlight is turned back on, and the display is returned to normal.

Display Update

In Listing 7, the showCount utility function rewrites the LCD display with the current slot counts by positioning the cursor on the second line of the LCD and generating the count string with .format. (Note that I do not have to clear the display because I rewrite the entire 16-character line each time.) The resetCount utility function sets all slots to 0 counts in a for loop, which is handy for testing the counter at the beginning of the day or after maintenance.

Listing 7

showCount

 

Populating MySQL

Once the pennies have been collected, the operator can submit the count, which commits it to the database. In Listing 8, lines 2 and 3 clear the display then show a status message before attempting to connect to the database.

Listing 8

Database Commit

 

Line 5 gets the current date, and line 7 generates a date-time string in the appropriate format for MySQL. I connect to the database and ask for a dictionary cursor before generating a SQL statement by using format to concatenate all of the current slot counts into a SQL query (lines 9-11). Finally, I submit the query and commit the change.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News