<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://old.hacdc.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SunshineMcfadden</id>
	<title>HacDC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://old.hacdc.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SunshineMcfadden"/>
	<link rel="alternate" type="text/html" href="https://old.hacdc.org/index.php/Special:Contributions/SunshineMcfadden"/>
	<updated>2026-05-07T17:03:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://old.hacdc.org/index.php?title=AVR_Microcontroller_Class_2011&amp;diff=5438</id>
		<title>AVR Microcontroller Class 2011</title>
		<link rel="alternate" type="text/html" href="https://old.hacdc.org/index.php?title=AVR_Microcontroller_Class_2011&amp;diff=5438"/>
		<updated>2011-07-15T06:08:17Z</updated>

		<summary type="html">&lt;p&gt;SunshineMcfadden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Syllabus, course material, homeworks, photos, etc from an Introduction to Microcontrollers with AVR chips class can be found here.  &lt;br /&gt;
&lt;br /&gt;
Also see (and contribute to) [[Useful AVR Links]]&lt;br /&gt;
For info about the kit: [[Avr2011_kit]] and [[Avr2011 Programming The Kit]]&lt;br /&gt;
Or check out the old version of the course [[AVR Microcontroller Class 2009]]&lt;br /&gt;
&lt;br /&gt;
== Class 0: Introduction and Setup ==&lt;br /&gt;
&lt;br /&gt;
Hello World!  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Covers&#039;&#039;&#039;: What the AVRs are, what all the pins do, what they can do for you. A&lt;br /&gt;
brief tour of the toolchain, and getting your firmware up and running&lt;br /&gt;
on the chip.  Reading the datasheets.  How to make chips speak digital&lt;br /&gt;
to the outside world, pin-by-pin. Just enough C programming fundamentals to&lt;br /&gt;
make it work.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Slides:&#039;&#039;&#039; [[Media:avr2011_class0.pdf]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lab&#039;&#039;&#039;: Building the kit and running a test LED flasher. &lt;br /&gt;
&lt;br /&gt;
For assembly instructions and more details on the class kit, see [[Avr2011_kit]].&lt;br /&gt;
How to program the class kit, see [[Avr2011 Programming The Kit]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Demo Code&#039;&#039;&#039;: [[Media: LED_Demo.tgz]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Homework&#039;&#039;&#039;: More soldering, and Cylon Eyes.  Optional extra credit: Simple POV toy (hint, make the timing around 2ms between updates and swing your arms).  Super bonus points: Make a neat POV toy. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OPC (Other People&#039;s Code)&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
[[Media: Pov demo.tar.gz]] An example POV toy.  This contains 4 different patterns; two diamonds, a trapezoid and a &#039;&#039;&#039;smiley face&#039;&#039;&#039;.  Also contains examples of using a character array to drive the POV toy, as well as use of constants to determine how the program runs.  - Will&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;: &lt;br /&gt;
* ATmega48P Datasheets (get both): [http://www.atmel.com/dyn/resources/prod_documents/8025S.pdf ATmega48P Summary Datasheet] and [http://www.atmel.com/dyn/resources/prod_documents/doc8025.pdf The Long ATmega48P Datasheet]  &lt;br /&gt;
* Bootloader appnote [http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf]&lt;br /&gt;
* [[Installing AVR Toolchain]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Screenshot-ATmega48-88-168.png | 500px]]&lt;br /&gt;
&lt;br /&gt;
== Class 1: Digital and Serial I/O ==&lt;br /&gt;
&lt;br /&gt;
Interfacing with the real world is the soul of microcontrolling.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Covers&#039;&#039;&#039;: Gathering simple data from the world, and learn how to spit it back out.  A serial link with your computer enables all sorts of tricks, and enables the microcontroller version of printf debugging.  Some boolean logic comes in handy here.  Along the way, we&#039;ll learn a bunch about debouncing switches.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Slides&#039;&#039;&#039;: [[Media:avr2011_class1.pdf]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Labs&#039;&#039;&#039;: More Cylon Eyes, All sorts of button-pressing demos, ASCII-to-binary keymapper, General-purpose serial LED display&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Demo Code&#039;&#039;&#039;: [[Media: avr2011_class1_demoCode.tgz]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HW&#039;&#039;&#039;: Ghetto logic probe and analyzer: read input on PORTC, display values on the LEDs, write out the value of PINC over serial, interpret/log/whatever using your laptop  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OPC (Other People&#039;s Code)&#039;&#039;&#039;:  [[microTweeter]] a silly little program to interface twitter with a microcontroller.  It is designed to post quotes from a file when a button is pressed on a microcontroller.  This was done as learning experience &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.mycaal.com/ &amp;lt;span style=&amp;quot;color:black;font-weight:normal; text-decoration:none!important;background:none!important; text-decoration:none;&amp;quot;&amp;gt;loan modification&amp;lt;/span&amp;gt;] with python, serial communications and social media integration.  -Will G.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;: &lt;br /&gt;
* More than you ever wanted to know about debouncing: [http://www.ganssle.com/debouncing.htm A Guide to Debouncing]&lt;br /&gt;
&lt;br /&gt;
== Class 2: ADC and PWM: &amp;quot;Analog&amp;quot; I/O ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Covers&#039;&#039;&#039;: Learn about ways to fake analog data into and out of your microcontroller.  We&#039;ll learn how to switch logic states fast to emulate an analog output, and how to use the built-in analog-to-digital converters to measure the complex real-world.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Slides&#039;&#039;&#039;: [[Media:avr2011_class2.pdf]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Demo Code&#039;&#039;&#039;: [[Media: avr2011_class2_demoCode.tgz]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Labs&#039;&#039;&#039;: Dimming LEDs, light-level meter, ghetto oscilloscope&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Homework&#039;&#039;&#039;:  Auto-dimming LED or basic light-level data logger&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;: You&#039;ll need to solder up the light sensors: [[http://wiki.hacdc.org/index.php/Avr2011_kit#Adding_the_Light_Sensor_for_Class_2_.28ADC.29 follow these directions]]&lt;br /&gt;
&lt;br /&gt;
== Class 3: Interrupts ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Covers&#039;&#039;&#039;: Interrupts call subroutines when certain conditions are true. They take a lot of the programming burden off your shoulders, enable the AVR to syncronize to external devices, and are great for super-fast response applications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Slides&#039;&#039;&#039;: [[Media: avr2011_class3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Demo Code&#039;&#039;&#039;: [[Media: avr2011_externalInterrupt.tgz]], [[Media: avr2011_serialInterrupt.tgz]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Labs&#039;&#039;&#039;:  Bunch of pushbutton interrupt routines, light/dark transition sensor, non-blocking serial I/O&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Homework&#039;&#039;&#039;: Response-time-tester Game or &amp;quot;improved&amp;quot; interrupt-driven ghetto oscilloscope&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
== Class 4: Timers and Counters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Covers&#039;&#039;&#039;: Timers and counters let you time and count events!  Up until now, we&#039;ve been doing a lot with for loops and delays to count the passing of time.  It&#039;s much easier and more precise to let the hardware do the timing.  When you add interrupts and timers together, the world becomes your oyster!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Slides&#039;&#039;&#039;: [[Media: avr2011_class4.pdf]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Demo Code&#039;&#039;&#039;: [[Media: avr2011_counterClock.tgz]]  [[Media: avr2011_counterPWM.tgz]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Labs&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Homework&#039;&#039;&#039;: Response-time-tester Game or tone generator&lt;br /&gt;
&lt;br /&gt;
== Class 5: Flash, EEPROM, I2C, USB, SD Cards, GPS, and Life After AVR Class ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Covers&#039;&#039;&#039;: First, we&#039;ll cover using the internal flash memory and EEPROM for data storage.    Then I&#039;ll demo how to use other people&#039;s code/libraries and tie it in to our packages, interfacing with all sorts of random devices for fun and profit.  The final (optional) trick will be turning your classboard into a standalone AVR programmer so that you can program raw chips yourself, and outgrow the bootloader.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Labs&#039;&#039;&#039;:  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Homework&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Microcontrollers]]&lt;br /&gt;
[[Category:Classes]]&lt;/div&gt;</summary>
		<author><name>SunshineMcfadden</name></author>
	</entry>
	<entry>
		<id>https://old.hacdc.org/index.php?title=Byzantium&amp;diff=5437</id>
		<title>Byzantium</title>
		<link rel="alternate" type="text/html" href="https://old.hacdc.org/index.php?title=Byzantium&amp;diff=5437"/>
		<updated>2011-07-15T06:07:22Z</updated>

		<summary type="html">&lt;p&gt;SunshineMcfadden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This project was launched with a sprint on Feb 25-27, 2011.&lt;br /&gt;
Sprints will be held the last weekend of every month.&lt;br /&gt;
&lt;br /&gt;
The development wiki page is [[Byzantium_Live_Distro|here]].&lt;br /&gt;
&lt;br /&gt;
The official mailing list is [http://hacdc.org/cgi-bin/mailman/listinfo/byzantium here].  The Yahoogroup will be deleted on 14 July 2011.&lt;br /&gt;
&lt;br /&gt;
== Project Goals ==&lt;br /&gt;
The goal of Project Byzantium is to develop a communication system by which users can connect to each other and share information in the absence of convenient access to the Internet. &lt;br /&gt;
&lt;br /&gt;
The use cases for such a system would be:&lt;br /&gt;
# The infrastructure for accessing the internet has become damaged or inaccessible. (Eg, a natural disaster such as Hurricane Katrina.)&lt;br /&gt;
# A central authority has decided to explicitly block or shutdown key infrastructure. (Eg, Egypt&#039;s recent internet blackout.)&lt;br /&gt;
# A zombie apocalypse in which the personnel responsible for maintaining key infrastructure have all been turned.&lt;br /&gt;
&lt;br /&gt;
The project aims to develop and publish the necessary documentation, best practices, and software to construct and support such a system. Our current approach is to start by investigating and documenting the existing technologies which would support such a system. In particular, mesh networking protocols, wireless networking technologies, and decentralized (or less-centralized) alternatives to internet addressing/naming systems such as DNS. In designing the system, we aim to reduce the dependency on exotic hardware or skill sets so that the system can be deployed quickly and easily by average internet users.&lt;br /&gt;
&lt;br /&gt;
An additional goal is that users not actively participating in the mesh network (i.e., not running mesh routing software on their devices) can make &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.mycaal.com/ &amp;lt;span style=&amp;quot;color:black;font-weight:normal; text-decoration:none!important;background:none!important; text-decoration:none;&amp;quot;&amp;gt;loan modification&amp;lt;/span&amp;gt;] use of the network without having to install anything new, jailbreak their phone, or pry the information out of a hacker infected with the Exsurgent virus.&lt;br /&gt;
&lt;br /&gt;
==Parts==&lt;br /&gt;
[[Byzantium_InterMesh|InterMesh]]&lt;br /&gt;
[[Byzantium_Distributed_DNS|Distributed DNS]]&lt;br /&gt;
[[Byzantium_Live_Distro|Live Distro]]&lt;br /&gt;
&lt;br /&gt;
== Sprints ==&lt;br /&gt;
[[Byzantium Sprint 1|Sprint 1 Details]] [http://drwho.virtadpt.net/archive/2011/03/15/project-byzantium-sprint-1 Write up.]&lt;br /&gt;
[[Byzantium Sprint 2|Sprint 2 Details]] [http://drwho.virtadpt.net/archive/2011/04/14/project-byzantium-development-sprint-2 Write up.]&lt;br /&gt;
[[Byzantium Sprint 3|Sprint 3 Details]]&lt;br /&gt;
[[Byzantium Sprint 4|Sprint 4 Details]]&lt;br /&gt;
&lt;br /&gt;
== Presentations and PR ==&lt;br /&gt;
[http://www.novalug.org/node/176 Ben and the Doctor will be presenting at NOVALUG!] - 14 May 2011&lt;br /&gt;
[http://contactcon.com/project-byzantium The Doctor will be presenting at ContactCon!] - 20 October 2011&lt;br /&gt;
* I&#039;ll also be doing a live demo of Byzantium during the conference! --The Doctor&lt;br /&gt;
&lt;br /&gt;
== Press ==&lt;br /&gt;
[http://www.fastcompany.com/1750215/how-hackerspaces-can-do-good-for-the-world Fast Company: 28 April 2011]&lt;/div&gt;</summary>
		<author><name>SunshineMcfadden</name></author>
	</entry>
</feed>