Support Atari Punk Console

The Atari Punk Console is a Stepped Tone Generator, that uses two timer ic’s – in this case a Timer556 ic containing two Timer555 circuits – to create two oscillators, or multivibrators.

Engineer’s Notebook: Integrated Circuit Apllications, 1980 by Forrest M. Mims III

An astable square wave oscillator triggers a monostable pulse oscillator, resulting in a specific continuous tone. Turning the potmeter of the astable oscillator – leg 12 of Timer556 – adjusts the frequency of its triggering wave, changing the pitch of the tone.
The second potmeter – leg 1 of Timer556 – controls the width of the pulse generated by the monostable oscillator, changing the timbre of the tone.

As the two waveforms shift relative to each other, at times pitch and timbre step to a different level – it is, after all, a Stepped Tone Generator – creating interesting effects. The table below explains this effect vizualizing the square wave forms generated by astable generator 1 and monostable generator 2.

The circuits used in this kit are integrated in one component: the Timer556.
Below you can see the pin configuration of a single Timer555 and how that translates to the Timer556: Timer A on the left side and Timer B on the right.

Translations of the building instructions for this kit.
English

Credits en sources
Forrest M. Mims III
syntherjack
Timer 555 explained – by Terence Thomas
The Timer555 Wiki

support vma444

Installatie
The VMA444 is a radio and RDS receiver combined with an efficient 150 mW audio amplifier. This module is ideal if you want to create your own clock radio or if you want to add FM functionality to your projects.

VMA444 pin configurartie
VMA444 PIN Arduino PIN Description
5V 5V Supply voltage
GND GND Ground
SDIO Analog pin A4 Data
SCLK Analog pin A5 Clock
RST Digital pin D2 Reset

As with any receiver, the VMA444 needs an antenna. The VMA444 antenna is connected to the grounding of your earphone cable, so an earphone or audio cable has to be plugged in to operate the VMA444 properly.
Download de Arduino library op VMA11 en installeer met menu sketch>libraries>add from zip.

Voorbeeld van basis sketch:

#include "VMA11.h"
#include "Wire.h"
int resetPin = 2; // these are the connections between VMA444 and the Arduino UNO
int SDIO = A4;
int SCLK = A5;
VMA11 radio(resetPin, SDIO, SCLK);
int channel;
int volume;
char rdsname[9];
char rdsrt[65];
char previousRadioText[65];
uint8_t lastChar;

void setup()
{
	Serial.begin(9600);
	Serial.println("\n\nVMA11 Test Sketch");
	Serial.println("===========================");
	Serial.println("a b Favourite stations");
	Serial.println("+ - Volume (max 15)");
	Serial.println("u d Seek up / down");
	Serial.println("r Listen for RDS Data (15 sec timeout)");
	Serial.println("R Listen for RDS Data (15 sec timeout)");
	Serial.println("Send me a command letter.");

	radio.powerOn();
	radio.setVolume(1);
	volume=1;
	radio.setChannel(1021);
	memset(previousRadioText,0,65);
	memset(rdsrt,0,65);
}
void loop()
{
	if(radio.readRDSRadioText(rdsrt)){
		if(strcmp(rdsrt,previousRadioText)){
			Serial.println(rdsrt);
 			strcpy(previousRadioText,rdsrt);
 		}
	}
 	if (Serial.available()){
		char ch = Serial.read();
 		if (ch == 'u') {
			channel = radio.seekUp();
			displayInfo();
		} else if (ch == 'd') {
			channel = radio.seekDown();
			displayInfo();
		} else if (ch == '+') {
 			volume ++;
 			if (volume >=16) volume = 15;
 			radio.setVolume(volume);
			displayInfo();
 		} else if (ch == '-') {
 			volume --;
 			if (volume < 0) volume = 0;
 			radio.setVolume(volume);
 			displayInfo();
 		} else if (ch == 'a') {
 			channel = 1015; // Rock FM
 			radio.setChannel(channel);
 			displayInfo();
		} else if (ch == 'b') {
			channel = 925; // KBCO in Boulder
 			radio.setChannel(channel);
 			displayInfo();
 		} else if (ch == 'r') { 
 			radio.readRDSRadioStation(rdsname);
			Serial.println(rdsname);
 		} else if (ch == 'R') {
 			radio.readRDS(rdsname,rdsrt,&lastChar);
 			Serial.println(rdsrt);
 		}
 	}
}

void displayInfo()
{
 Serial.print("Channel:"); Serial.print(channel);
 Serial.print(" Volume:"); Serial.println(volume);
}

support-ledstrip

Installatie

strip PIN Arduino PIN Description
GND zwart GND Ground
VCC rood 5V Supply voltage
DATA geel Digital pin Stuursignaal

Download de Arduino library op Adafruit_NeoPixel en installeer met menu sketch>libraries>add from zip.

Aanbevolen:

  • Plaats een 1000 uF condensator tussen de + and – aansluitingen van de strip.
  • Houd de draadlengte tussen de Arduino en de eerste pixel zo kort mogelijk
  • Voer de DATA-IN van de strip door een 300-500 OHM weerstand.
  • Vermijd aansluite op een live circuit. Als het niet anders kan, verbind dan eerst de GROUND (-), dan + en als laatste de data.
  • Gebruik bij een 3.3V microcontroller bij voorkeur een LOGIC-LEVEL CONVERTER voor de data line.

Voorbeeld van basis sketch:

#include "Adafruit_NeoPixel.h"

#define LED_PIN    6

#define LED_COUNT 8

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);


// setup() function -- runs once at startup --------------------------------

void setup() {
  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
}


// loop() function -- runs repeatedly as long as board is on ---------------

void loop() {
  // Fill along the length of the strip in various colors...
  colorWipe(strip.Color(255,   0,   0), 50); // Red
  colorWipe(strip.Color(  0, 255,   0), 50); // Green
  colorWipe(strip.Color(  0,   0, 255), 50); // Blue

  // Do a theater marquee effect in various colors...
  theaterChase(strip.Color(127, 127, 127), 50); // White, half brightness
  theaterChase(strip.Color(127,   0,   0), 50); // Red, half brightness
  theaterChase(strip.Color(  0,   0, 127), 50); // Blue, half brightness

  rainbow(10);             // Flowing rainbow cycle along the whole strip
  theaterChaseRainbow(50); // Rainbow-enhanced theaterChase variant
}


// Some functions of our own for creating animated effects -----------------

void colorWipe(uint32_t color, int wait) {
  for(int i=0; i RGB
        strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
      }
      strip.show();                // Update strip with new contents
      delay(wait);                 // Pause for a moment
      firstPixelHue += 65536 / 90; // One cycle of color wheel over 90 frames
    }
  }
}

support VMA425

Installatie
7-segment display bord gebaseerd op de TM163x driver ic.

TM1637 pin configurartie
TM1637 PIN Arduino PIN Description
CLK Any digital PIN Clock
DIOPIN Any digital PIN Digital output
VCC 5V Supply voltage
GND GND Ground

Download de Arduino library op arduino-tm1637 en installeer met menu sketch>libraries>add from zip.

Voorbeeld van basis sketch:

/*
	Basic usage example
	Demonstrated some of the basic functionality of the library. 
        Initialize the display, set the backlight brightness, 
        print some text, count from 0 to 100 and print on display and blink some text.
  Note: make sure to set your serial monitor to line end: NEW LINE!
	The circuit:
  * connect TM1637 pin CLK to Arduino pin D4
  * connect TM1637 pin DIO to Arduino pin D5
  * connect TM1637 pin Vcc to Arduino pin 5V
  * connect TM1637 pin GND to Arduino pin GND
	Created 25 September 2015
	By Bram Harmsen
	https://github.com/bremme/arduino-tm1637
*/

// include the SevenSegmentTM1637 library
#include "SevenSegmentTM1637.h"

/* initialize global TM1637 Display object
*  The constructor takes two arguments, the number of the clock pin and the digital output pin:
* SevenSegmentTM1637(byte pinCLK, byte pinDIO);
*/
const byte PIN_CLK = 4;   // define CLK pin (any digital pin)
const byte PIN_DIO = 5;   // define DIO pin (any digital pin)
SevenSegmentTM1637    display(PIN_CLK, PIN_DIO);

// run setup code
void setup() {
  Serial.begin(9600);         // initializes the Serial connection @ 9600 baud
  display.begin();            // initializes the display
  display.setBacklight(100);  // set the brightness to 100 %
  display.print("INIT");      // display INIT on the display
  delay(1000);                // wait 1000 ms
};

// run loop (forever)
void loop() {
  display.print("LOOP");                // display LOOP on the display
  delay(1000);                          // wait 1000 ms
  display.print("COUNTING SOME DIGITS");// print COUNTING SOME DIGITS
  display.clear();                      // clear the display
  for (uint8_t i=0; i < 100; i++) {     // loop from 0 to 100
    display.print(i);                   // display loop counter
    delay(100);                         // wait 100 ms
  };
  display.clear();                      // clear the display
  display.print("SUCC");                // print SUCC for success
  display.blink();                      // blink SUCC
  delay(1000);                          // wait 1000 ms
};

support Arduino Nano R3

De Arduino Nano is een klein, compleet, breadboard-vriendelijk ontwikkelboard gebaseerd op de ATmega328P, dezelfde chip als de UNO, uitgewerkt op minimaal formaat.

Soldeer de lange headers aan de lange kanten van het board. Gebruik de headers voor interne communicatie met andere modules, de ICSP pinnen, niet of soldeer ze vanaf de onderzijde (uitstekend naar boven). Gebruik voor seriƫle communicatie als uploaden een Mini-USB kabel.

Nano pin configurartie
Nano pin configurartie

Open de laatste versie van de Arduino ontwikkelsoftware. Selecteer in het tools>board menu Arduino Nano en Atmega328P (old bootloader) in het tools>processsor menu.

Nano tools menu instellingen

support ESP8266Witty

De witty cloud is een klein ontwikkel bord gebaseerd op de ESP-12 WiFi module. Net als de NodeMCU kan deze gemakkelijk via USB worden geprogrammeerd. Om dit systeem compact en energie besparend te houden bestaat deze uit 2 delen. De bovenste helft bevat een USB aansluiting (alleen spanning), een LDR, een LED en de ESP-12 module. Het onderste deel heeft een CH340 USB communicatie chip met USB aansluiting om de ESP chip te flashen / programmeren.

Sluit het onderste deel van de module met een micro usb kabel aan op een pc met de laatste versie van de Arduino-IDE ontwikkelingssoftware.
Start de Arduino-IDE en selecteer Adafruit Feather HUZZAH esp8266 in het tools>board menu. Selecteer de juiste usb-port in het tools>port menu.

Maak een nieuwe sketch aan, knip/plak onderstaande code en laad de sketch naar de esp8266 module. Na het uploaden start de module als access point Witty IoT. Zoek in de lijst met access points in de wifi settings van een telefoon of ander mobiel apparaat naar Witty IoT en maak een verbinding. De RGBled op uw esp8266 module knippert ter bevestiging van de verbinding.
In het file>examples menu vindt u diverse sketches om verder te exprimenteren met uw Witty board.

////////////////////////////////////////////////
// ESP8266 Serial ESP-12F Wi-Fi Witty Cloud Development Board.
// select "Adafruit Feather HUZZAH esp8266" in the board menu.
// test sketch:
// Creates AccessPoint "Witty IoT", find it in the wifi settings of
// a device and connect: your Witty board will blink.
////////////////////////////////////////////////

#include <ESP8266WiFi.h>

WiFiServer server(80);                         /*  Initialize the server on Port 80 */

void setup() {
  WiFi.mode(  WIFI_AP );                       /*  Our ESP8266-12E is an AccessPoint */
  WiFi.softAP(  "Witty_IoT", "12345678" );     /*  Provide the (SSID, password) */ 
  server.begin();                              /*  Start the HTTP Server */
  
  Serial.begin( 115200 );                      /*  Start communication between the ESP8266-12E and the monitor window */
  IPAddress HTTPS_ServerIP  = WiFi.softAPIP(); /*  Obtain the IP of the Server */
  Serial.print( "Server IP is: "  );           /*  Print the IP to the monitor window */
  Serial.println( HTTPS_ServerIP  );
}

void loop()
{
  WiFiClient client = server.available();
  
  /* no client: do nothing */
  if (!client) return;
  
  /* client: blink in acknowledgement */
  Serial.println( "Somebody has connected :)" );
  analogWrite(13, 255);
  delay(100);
  analogWrite(13, 0);
  analogWrite(15, 255);
  delay(100);
  analogWrite(15, 0);
  analogWrite(12, 255);
  delay(100);
  analogWrite(12, 0);
}