Skip to content

Instantly share code, notes, and snippets.

View Arachnid's full-sized avatar

Nick Johnson Arachnid

View GitHub Profile
DIL14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14
DIL16 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DIL18 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
DIL20 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
---------------------------------------------------------------------------------------
7400 | X X X X X X X X Quad 2-input NAND gate
7402 | X X X X X X X X Quad 2-input NOR gate
7403 | X X X X X X X X Quad 2-input NAND gate
7404 | X X X X X X Hex inverter
7408 | X X X X X X X X Quad 2-input AND gate
74*01 oc
74*02 out
74*80 ?
74*82 out
74*121 out
74*39 oc
74*33 out
74*624 pwr
74*283 out
74*445 out
My Name is Nick Johnson from Arachnid Labs, and I'd like to introduce you to the
Tsunami.
The Tsunami is an Arduino-compatible development board with a Direct Digital
Synthesis chip onboard. This makes it an incredibly versatile signal generator
and frequency counter, and makes a plethora of other tasks possible too.
- Cut to pan of PCB -
Direct Digital Synthesis is a way of generating analog waveforms, like sine
import random
import sys
from PIL import Image, ImageDraw
starts = range(0, 85, 12)
# Defined as (start_pixel, end_pixel, is_down)
circles = [
(starts[0], starts[1], False),
(starts[0], starts[1], True),
volatile long int a = 123;
volatile long int b = 456;
char foo;
int main() {
foo = a < b;
}
#define PIN 3
void setup() {
Serial.begin(115200);
}
void loop() {
long last = 0;
boolean last_value = -1;
while(1) {
typedef enum {
STATE_MAIN,
STATE_RECEIVE,
STATE_SEND,
STATE_PLAY
} state_t;
void state_machine() {
while(1)
{
switch (GET_DURATION(*pByte)) {
case 7:
delay(vel * 6);
case 6:
delay(vel * 2);
case 5:
delay(vel * 4);
case 4:
delay(vel * 4);
case 3:
#define NEXT goto *opcodes[program[pc++]]
int interpret(char *stack, int sp, char *program) {
int pc = 0;
static const void *opcodes[] = {&&push, &&pop, &&add, &&sub, &&ret};
NEXT;
push:
stack[sp++] = program[pc++];
NEXT;
template <typename T>
class Monitored {
protected:
T value;
boolean dirty;
public:
Monitored<T>& operator=(const T source) {
value = source;
dirty = true;
}