First
This commit is contained in:
commit
b12d602075
96
charmap.txt
Normal file
96
charmap.txt
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
_
|
||||||
|
.
|
||||||
|
t
|
||||||
|
f
|
||||||
|
h
|
||||||
|
s
|
||||||
|
p
|
||||||
|
u
|
||||||
|
q
|
||||||
|
k
|
||||||
|
y
|
||||||
|
z
|
||||||
|
|
||||||
|
w
|
||||||
|
,
|
||||||
|
W
|
||||||
|
'
|
||||||
|
M
|
||||||
|
!
|
||||||
|
B
|
||||||
|
°
|
||||||
|
Z
|
||||||
|
C
|
||||||
|
F
|
||||||
|
"
|
||||||
|
R
|
||||||
|
S
|
||||||
|
?
|
||||||
|
E
|
||||||
|
U
|
||||||
|
D
|
||||||
|
:
|
||||||
|
G
|
||||||
|
V
|
||||||
|
L
|
||||||
|
P
|
||||||
|
J
|
||||||
|
T
|
||||||
|
A
|
||||||
|
Y
|
||||||
|
I
|
||||||
|
O
|
||||||
|
H
|
||||||
|
;
|
||||||
|
N
|
||||||
|
^
|
||||||
|
K
|
||||||
|
|
||||||
|
Q
|
||||||
|
X
|
||||||
|
/
|
||||||
|
*
|
||||||
|
Ü
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
0
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
-
|
||||||
|
$
|
||||||
|
+
|
||||||
|
£
|
||||||
|
%
|
||||||
|
=
|
||||||
|
ü
|
||||||
|
Ö
|
||||||
|
ä
|
||||||
|
(
|
||||||
|
)
|
||||||
|
&
|
||||||
|
Ä
|
||||||
|
´
|
||||||
|
|
||||||
|
ö
|
||||||
|
x
|
||||||
|
|
||||||
|
m
|
||||||
|
`
|
||||||
|
g
|
||||||
|
j
|
||||||
|
v
|
||||||
|
d
|
||||||
|
l
|
||||||
|
b
|
||||||
|
c
|
||||||
|
r
|
||||||
|
o
|
||||||
|
n
|
||||||
|
e
|
||||||
|
a
|
||||||
|
i
|
23
convert.py
Normal file
23
convert.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
orig = {}
|
||||||
|
with open("charmap.txt" ) as f:
|
||||||
|
for n, line in enumerate(f):
|
||||||
|
line = line.strip()
|
||||||
|
if line:
|
||||||
|
orig[n] = line
|
||||||
|
else:
|
||||||
|
print(n, "-empty-")
|
||||||
|
clist = {}
|
||||||
|
for pos, char in orig.items():
|
||||||
|
ascii = ord(char)
|
||||||
|
clist[ascii] = pos, char
|
||||||
|
print(pos, char, ascii)
|
||||||
|
|
||||||
|
for x in range(0xff):
|
||||||
|
print(x, *clist.get(x, (0, '')))
|
||||||
|
|
||||||
|
print("unsigned char charmap[] = {", end="")
|
||||||
|
for x in range(0xff):
|
||||||
|
print('{:>0}'.format(clist.get(x, (0, 0))[0]), end=", ")
|
||||||
|
print("};")
|
32
slowcat.py
Executable file
32
slowcat.py
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#! /usr/bin/python2
|
||||||
|
# slowcat.py - print a file slowly
|
||||||
|
# author : dave w capella - http://grox.net/mailme
|
||||||
|
# date : Sun Feb 10 21:57:42 PST 2008
|
||||||
|
############################################################
|
||||||
|
from __future__ import print_function
|
||||||
|
import sys, time
|
||||||
|
|
||||||
|
delay = .02
|
||||||
|
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
arg = sys.argv[1]
|
||||||
|
if arg != "-d":
|
||||||
|
print("usage: %s [-d delay]" % (sys.argv[0]))
|
||||||
|
print("delay: delay in seconds")
|
||||||
|
print("example: %s -d .02 < vtfile" % (sys.argv[0]))
|
||||||
|
sys.exit()
|
||||||
|
if len(sys.argv) > 2:
|
||||||
|
delay = float(sys.argv[2])
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
try:
|
||||||
|
for c in raw_input():
|
||||||
|
print(c, end="")
|
||||||
|
sys.stdout.flush()
|
||||||
|
time.sleep(delay)
|
||||||
|
print()
|
||||||
|
except:
|
||||||
|
break
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# eof: slowcat.py
|
246
stepper.ino
Normal file
246
stepper.ino
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
/*
|
||||||
|
Stepper Motor Control - one step at a time
|
||||||
|
|
||||||
|
This program drives a unipolar or bipolar stepper motor.
|
||||||
|
The motor is attached to digital pins 8 - 11 of the Arduino.
|
||||||
|
|
||||||
|
The motor will step one step at a time, very slowly. You can use this to
|
||||||
|
test that you've got the four wires of your stepper wired to the correct
|
||||||
|
pins. If wired correctly, all steps should be in the same direction.
|
||||||
|
|
||||||
|
Use this also to count the number of steps per revolution of your motor,
|
||||||
|
if you don't know it. Then plug that number into the oneRevolution
|
||||||
|
example to see if you got it right.
|
||||||
|
|
||||||
|
Created 30 Nov. 2009
|
||||||
|
by Tom Igoe
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <Stepper.h>
|
||||||
|
|
||||||
|
unsigned char charmap[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 24, 0, 64, 67, 74, 16, 72, 73, 51, 65, 14, 63, 1, 50, 57, 53, 54, 55, 56, 58, 59, 60, 61, 62, 31, 43, 0, 68, 0, 27, 0, 38, 19, 22, 30, 28, 23, 32, 42, 40, 36, 46, 34, 17, 44, 41, 35, 48, 25, 26, 37, 29, 33, 15, 49, 39, 21, 0, 0, 0, 45, 0, 82, 94, 88, 89, 86, 93, 3, 83, 4, 95, 84, 9, 87, 81, 92, 91, 6, 8, 90, 5, 2, 7, 85, 13, 79, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 69, 0, 0};
|
||||||
|
|
||||||
|
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
|
||||||
|
// for your motor
|
||||||
|
|
||||||
|
// initialize the stepper library on pins 8 through 11:
|
||||||
|
Stepper columnStepper(stepsPerRevolution, 8, 9, 10, 11);
|
||||||
|
Stepper charWheelStepper(stepsPerRevolution, 7, 6, 5, 4);
|
||||||
|
|
||||||
|
int charWidth = 11; // how many steps between char prints
|
||||||
|
|
||||||
|
int currentPos = 0;
|
||||||
|
int currentChar = 0;
|
||||||
|
int limitPin = 12;
|
||||||
|
int headMotorLimitPin = 13;
|
||||||
|
int hammerPin = 22;
|
||||||
|
|
||||||
|
int Motor1A = 2;
|
||||||
|
int Motor1B = 3;
|
||||||
|
int Motor2A = 23;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// initialize the serial port:
|
||||||
|
Serial.begin(1200);
|
||||||
|
|
||||||
|
// configure limit pin
|
||||||
|
pinMode(limitPin, INPUT);
|
||||||
|
digitalWrite(limitPin, HIGH);
|
||||||
|
|
||||||
|
pinMode(headMotorLimitPin, INPUT);
|
||||||
|
digitalWrite(headMotorLimitPin, HIGH);
|
||||||
|
|
||||||
|
pinMode(Motor1A, OUTPUT);
|
||||||
|
pinMode(Motor1B, OUTPUT);
|
||||||
|
pinMode(Motor2A, OUTPUT);
|
||||||
|
|
||||||
|
pinMode(hammerPin, OUTPUT);
|
||||||
|
digitalWrite(hammerPin, LOW);
|
||||||
|
|
||||||
|
|
||||||
|
columnStepper.setSpeed(90);
|
||||||
|
charWheelStepper.setSpeed(90);
|
||||||
|
Serial.println("Finding home");
|
||||||
|
findHome();
|
||||||
|
Serial.println("Home found!");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
delay(1000);
|
||||||
|
unsigned long lastCharTime;
|
||||||
|
while(0) {
|
||||||
|
for (int i = 0; i < 98; i++) {
|
||||||
|
printChar('0');
|
||||||
|
}
|
||||||
|
while(1) {lineFeed();}
|
||||||
|
}
|
||||||
|
while(1) {
|
||||||
|
if (Serial.available() > 0) {
|
||||||
|
// read the incoming byte:
|
||||||
|
lastCharTime = millis();
|
||||||
|
unsigned char in = Serial.read();
|
||||||
|
if (in == '\n') {
|
||||||
|
lineFeed();
|
||||||
|
lineFeed();
|
||||||
|
home();
|
||||||
|
} else {
|
||||||
|
printChar(in);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (millis() - lastCharTime > 1000) {
|
||||||
|
releaseSteppers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(1) {
|
||||||
|
lineFeed();
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
while(1) {
|
||||||
|
//charWheelStepper.step(96);
|
||||||
|
charWheelStepper.step(1);
|
||||||
|
delay(100);
|
||||||
|
Serial.println(digitalRead(headMotorLimitPin));
|
||||||
|
|
||||||
|
}
|
||||||
|
bool limit = digitalRead(limitPin);
|
||||||
|
if(!limit) {
|
||||||
|
// step one step:
|
||||||
|
columnStepper.step(-1);
|
||||||
|
} else {
|
||||||
|
columnStepper.step(1200);
|
||||||
|
}
|
||||||
|
Serial.println(limit);
|
||||||
|
delay(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
void printChar(unsigned char c){
|
||||||
|
int newLoc = charmap[c];
|
||||||
|
/*Serial.print("char ");
|
||||||
|
Serial.print(c);
|
||||||
|
Serial.print(" at ");
|
||||||
|
Serial.print(newLoc);*/
|
||||||
|
if (newLoc == 0){
|
||||||
|
charWheelStepper.step(1);
|
||||||
|
delay(30);
|
||||||
|
charWheelStepper.step(-1);
|
||||||
|
delay(30);
|
||||||
|
} else {
|
||||||
|
/*aSerial.print(", cur: ");
|
||||||
|
Serial.print(currentChar);
|
||||||
|
if (currentChar > newLoc) {
|
||||||
|
Serial.print(" > ");
|
||||||
|
newLoc = newLoc - currentChar;
|
||||||
|
currentChar += newLoc;
|
||||||
|
} else if (currentChar < newLoc) {
|
||||||
|
Serial.print(" < ");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Serial.print(" = ");
|
||||||
|
// that char is already selected
|
||||||
|
newLoc = 0;
|
||||||
|
}*/
|
||||||
|
newLoc = newLoc - currentChar;
|
||||||
|
currentChar += newLoc;
|
||||||
|
if (currentChar > 97) {
|
||||||
|
currentChar -= currentChar - 96;
|
||||||
|
}
|
||||||
|
/*Serial.print(" calcPos: ");
|
||||||
|
Serial.print(newLoc);
|
||||||
|
Serial.print(" new: ");
|
||||||
|
Serial.print(currentChar);*/
|
||||||
|
charWheelStepper.step(newLoc);
|
||||||
|
delay(30);
|
||||||
|
hammer();
|
||||||
|
freshTape();
|
||||||
|
}
|
||||||
|
columnStepper.step(charWidth);
|
||||||
|
currentPos += charWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
void hammer() {
|
||||||
|
digitalWrite(hammerPin, HIGH);
|
||||||
|
delay(13);
|
||||||
|
digitalWrite(hammerPin, LOW);
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void freshTape() {
|
||||||
|
unsigned long start = millis();
|
||||||
|
char backTime = 13;
|
||||||
|
digitalWrite(Motor2A, LOW);
|
||||||
|
while(digitalRead(headMotorLimitPin)){
|
||||||
|
digitalWrite(Motor2A, HIGH);
|
||||||
|
if (millis() - start > 1000) {
|
||||||
|
digitalWrite(Motor2A, LOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
digitalWrite(Motor2A, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void home() {
|
||||||
|
columnStepper.step(-currentPos);
|
||||||
|
currentPos = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lineFeed(){
|
||||||
|
unsigned long start = millis();
|
||||||
|
char backTime = 13;
|
||||||
|
digitalWrite(Motor1A, LOW);
|
||||||
|
digitalWrite(Motor1B, LOW);
|
||||||
|
while(!digitalRead(limitPin)){
|
||||||
|
digitalWrite(Motor1A, HIGH);
|
||||||
|
if (millis() - start > 1000) {
|
||||||
|
digitalWrite(Motor1A, LOW);
|
||||||
|
digitalWrite(Motor1B, HIGH);
|
||||||
|
delay(backTime);
|
||||||
|
digitalWrite(Motor1B, LOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
start = millis();
|
||||||
|
while(digitalRead(limitPin)){
|
||||||
|
digitalWrite(Motor1A, HIGH);
|
||||||
|
if (millis() - start > 1000) {
|
||||||
|
digitalWrite(Motor1A, LOW);
|
||||||
|
digitalWrite(Motor1B, HIGH);
|
||||||
|
delay(backTime);
|
||||||
|
digitalWrite(Motor1B, LOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
digitalWrite(Motor1A, LOW);
|
||||||
|
digitalWrite(Motor1B, HIGH);
|
||||||
|
delay(backTime);
|
||||||
|
digitalWrite(Motor1B, LOW);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void findHome() {
|
||||||
|
currentPos = 0;
|
||||||
|
currentChar = 0;
|
||||||
|
bool limit = 0;
|
||||||
|
lineFeed();
|
||||||
|
while (!limit) {
|
||||||
|
columnStepper.step(-1);
|
||||||
|
delay(3);
|
||||||
|
limit = digitalRead(limitPin);
|
||||||
|
}
|
||||||
|
charWheelStepper.step(-100);
|
||||||
|
columnStepper.step(20);
|
||||||
|
charWheelStepper.step(-1);
|
||||||
|
limit = digitalRead(limitPin);
|
||||||
|
if (limit) {
|
||||||
|
lineFeed();
|
||||||
|
Serial.print("Column limit error!");
|
||||||
|
findHome();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void releaseSteppers(){
|
||||||
|
for (int i = 4; i < 12; i++) {
|
||||||
|
digitalWrite(i, LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
32
welcome.txt
Normal file
32
welcome.txt
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Lapikute arendusmasin
|
||||||
|
|
||||||
|
lap-dev login: purustaja
|
||||||
|
Password: *****
|
||||||
|
|
||||||
|
I------------------------------I
|
||||||
|
I Kas oled Rekorditeks valmis? I
|
||||||
|
I------------------------------I
|
||||||
|
|
||||||
|
$ sudo apt-get rekt
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user