neingeist
/
arduinisten
Archived
1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

232 lines
10 KiB
Plaintext

#include <avr/pgmspace.h>
/*
Arduino Desc DB-25 Pin
======= ==== =========
GND GND 18-25
13 BUSY 11
12 nACK 10
11 D7 9
10 D6 8
9 D5 7
8 D4 6
7 D3 5
6 D2 4
5 D1 3
4 D0 2
3 nSTROBE 1
*/
int PIN_nSTROBE = 3;
int PIN_nACK = 12;
int PIN_BUSY = 13;
PROGMEM char porn[] =
"\r\n"
"\r\n"
" sexsexsexsexsexse\r\n"
" sexsesexsexsexsexsexs\r\n"
" sexsexsexsexsexsexsexse\r\n"
" sexsexsexsexsexsexsexsexsex\r\n"
" sexsexsexsexsexsexsexsexsexsex\r\n"
" sexsexsexsexsexsexsexsexsexsexs\r\n"
" sexsexsexsexsexsexsexsexsexsexsex\r\n"
" sexsexsexsexsexsexsexsexsexsexsexse\r\n"
" sexsexsexsexsexsexsexsexsexsexsexsex\r\n"
" exsexsexsexsexsexsexsex sexsexsexsex\r\n"
" sexsexsexsexsexsexsexs sexsexsexse\r\n"
" sexsexsexsexsexsexsex sexsexsex\r\n"
" sexsexsexsexsexsex sexsexsx\r\n"
" sexsexsexsexsexx sexsexs x\r\n"
" sexsexsexsexsex-****. .***-sexsexs sexs\r\n"
" sexsexsexsexsex sexsex sexsexs\r\n"
" sexsexsexsexsex sexsex sexsexsexs\r\n"
" sexsexsexsexsex sexse sexsexsexse\r\n"
" sesexsexsexsexs --sexsex- sexse sexsexsexse\r\n"
" xsexsexsexsexse sexs sexse sexsexsexs\r\n"
" sexsexsexsexsexse sexse sexsexsexse\r\n"
" sexsexsexsexsexsexs sexse sexsexse\r\n"
" sexsexse sexsexs ixx sexse\r\n"
" sexsex sexsexs i sex\r\n"
" sexs sexsexs i x\r\n"
" sex sexsex x x\r\n"
" x sexsex x x\r\n"
" x sexse xx\r\n"
" sex sex x\r\n"
" sexsexs xx x\r\n"
" sexsexsex x x x x\r\n"
" sexsexsexsexse x (o\r\n"
" sexsexsexsexse x x\r\n"
" sexsexsexsexse x x (o) x x\r\n"
" sexsexsexsexse x x x x\r\n"
" sexsexsexsex x x x x\r\n"
" sexsexsexsex x x x xx\r\n"
" sexsexsexse x x x x\r\n"
" sexsexsexse x x x x x\r\n"
" sexsexsexs x x\r\n"
" sexsexsexs x x\r\n"
" sexsexsex x x\r\n"
" sexsexsex x x\r\n"
" sexsexsex x x\r\n"
" sexsexse x x\r\n"
" sexsexse x x\r\n"
" sexsexs x x\r\n"
" sexsex sexsexse x x\r\n"
" sexsexsexsexsexs x\r\n"
" sexsexsexsexse x\r\n"
" sexsexsexsex o x\r\n"
" sexsex x\r\n"
" x x\r\n"
" x x\r\n"
" x x\r\n"
" x Y x\r\n"
" x x x\r\n"
" x x x\r\n"
" x x x\r\n"
" x sexsexsex x\r\n"
" x sexsexsexsexsx exsex\r\n"
" x sexsexsexsexsexs sexx\r\n"
" x sexsexsexsexsexsexs xx\r\n"
" x sexsexsexsexsexsexse x\r\n"
" x sexsexsexsexsexsexsexs\r\n"
" x sexsexsexsexsexsexsexse\r\n"
" sexsexsexsexsexsexsexsex\r\n"
" sexsexsexsexsexsexsexse\r\n"
" x sexsexsexsexsexsexsexs\r\n"
" xx sexsexsexsexsexsexsexs\r\n"
" sex sexsexsexsexsexsexsex\r\n"
" sex sexsexsexsexsexsexse\r\n"
" sexs sexsexsexsexsexsexs\r\n"
" sexse sexsexsexsexsexse\r\n"
" sexsex sexsexsexsexsexse\r\n"
" sexsex sexsexsexsexsexs\r\n"
" sexsexs sexsexsexsexsex\r\n"
" sexsexs sexsexsexsexse\r\n"
" sexsexse sexsexsexsexs\r\n"
" sexsexsex sexsexsexsex\r\n"
" sexsexsexs sexsexsexse\r\n"
" sexsexsexs sexsexsexse\r\n"
" sexsexsexse sexsexsexs\r\n"
" sexsexsexs sexsexsexse\r\n"
" sexsexsexse sexsexsexse\r\n"
" sexsexsexse sexsexsexse\r\n"
" sexsexsexse sexsexsexs\r\n"
" sexsexsexse sexsexsexse\r\n"
" sexsexsexsex sexsexsexse\r\n"
" sexsexsexsex sexsexsexse\r\n"
" sexsexsexsex sexsexsexsex\r\n"
" sexsexsexse sexsexsexsex\r\n"
" sexsexsexse sexsexsexsex\r\n"
" sexsexsexs sexsexsexsex\r\n"
" sexsexsexs sexsexsexse\r\n"
" sexsexsex sexsexsexse\r\n"
" sexsexse sexsexsexs\r\n"
" sexsexse sexsexsex\r\n"
" sexsexs sexsexse\r\n"
" sexsex sexsexs\r\n"
" sexsex sexsexs\r\n"
" sexsex sexsex\r\n"
" exsex sexse\r\n"
" sexsex sexsex\r\n"
" sexsex sexsex\r\n"
" sexsexs sexsexx\r\n"
" sexsexsex sexsexse\r\n"
" sexsexsexse sexsexsexse\r\n"
" sexsexsexsexs sexsexsexsex\r\n"
" sexsexsexsexse sexsexsexsex\r\n"
" sex sexsexsex sexsexsexsex\r\n"
" x sexsexse xx sexsexse\r\n"
" x sexsex\r\n"
" sexse\r\n"
" sexse\r\n"
" sexse\r\n"
" sex\r\n"
" xx\r\n"
" xx\r\n"
"\r\n"
;
void setup() {
int i;
for( i = 3; i <= 11; i++ ) {
pinMode (i, OUTPUT);
digitalWrite(i, LOW);
}
digitalWrite(PIN_nSTROBE, HIGH);
pinMode (PIN_nACK, INPUT);
pinMode (PIN_BUSY, INPUT);
// DEBUG
Serial.begin(9600);
}
void lpString(char* string) {
/****************************
http://www.beyondlogic.org/spp/parallel.htm
Data is first applied on the Parallel Port pins 2 to 7.
The host then checks to see if the printer is busy.
i.e. the busy line should be low. The program then
asserts the strobe, waits a minimum of 1uS, and then
de-asserts the strobe. Data is normally read by the
printer/peripheral on the rising edge of the strobe.
he printer will indicate that it is busy processing data
via the Busy line. Once the printer has accepted data,
t will acknowledge the byte by a negative pulse about
uS on the nAck line.
****************************/
int i = 0;
while(char c = string[i++]) {
// Spin on busy printer
while (digitalRead(PIN_BUSY) == HIGH){;}
// assert character to data lines
for (uint8_t b=0; b<8; b++) {
digitalWrite(4+b, c & 1);
c = c >> 1;
}
delayMicroseconds(50); // settle
// assert strobe,
// then deassert strobe (commit data)
digitalWrite(PIN_nSTROBE, LOW);
delayMicroseconds(50); // settle
digitalWrite(PIN_nSTROBE, HIGH);
// ignore BUSY, wait for falling nACK
while (digitalRead(PIN_nACK) == HIGH){;}
// now wait for rising nACK
while (digitalRead(PIN_nACK) == LOW){;}
}
}
void lpPorn(PGM_P string) {
int i = 0, j = 0;
char buf[80];
while (buf[j++] = pgm_read_byte(&string[i++])) {
// print a line a few times
if (buf[j-1] == '\n') {
buf[j-1] = 0; // terminate string
for (int k=1; k<=5; k++) {
lpString(buf);
Serial.println(buf);
}
//
lpString("\n");
j = 0; // reset
}
}
}
void loop() {
lpPorn(porn);
}