Körsbär.
Lite schellack på handtaget, blev väl sådär, accentuerade ojämnheterna och inte bara snideriet; sen paraffinolja på hela.
Go (Igo/Weiqi/Baduk), China, Language, Food, Comics, Art, Whatever
#include <wiringPi.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int pin[]={ 5, 6, 10, 11 };
int delaytime=1;
void init_pins ();
void step_forward ();
void step_backward ();
void closedown ();
int main(void) {
int step;
if (wiringPiSetup () == -1) {
printf ("problem med wiringPi\n");
exit (1);
}
init_pins();
// 2038-2039 verkar innebära ett varv/360 grader 2038/4=509,5
// Kanske 512 är nära nog, isf blir
// 180:256, 90:128, 45:64, 22.5:32, 11.25:16, _5.625_:8,
// 2.8125:4, 1.40625:2 och 0,703125:1
// Varje step_xxx() innebär en cykel, dvs 8 signaler och 8 step_xxx =
// 5.625 grader; 8x8=64
// Kortet har spec "stride angle 5.625 grader/64"...
for (step=0; step<509; step++)
step_forward();
for (step=0; step<509; step++)
step_backward();
closedown();
exit(0);
}
// Functions
void init_pins () {
int c;
for (c=0; c<4; c++)
pinMode(pin[c], OUTPUT);
}
void step_forward () {
int bit, pos, c;
int a=8, b=4;
for (c=0; c<4; c++, b=(b==1)?8:b/2, a=(a==1)?8:a/2) {
for (bit=8, pos=0; bit>=1;bit/=2, pos++) {
digitalWrite (pin[pos], a&bit);
delay (delaytime);
}
for (bit=8, pos=0; bit>=1;bit/=2, pos++) {
digitalWrite (pin[pos], (a+b)&bit);
delay (delaytime);
}
}
}
void step_backward () {
int bit, pos, c;
int a=1, b=8;
for (c=0; c<4; c++, b=(b==8)?1:b*2, a=(a==8)?1:a*2) {
for (bit=8, pos=0; bit>=1;bit/=2, pos++) {
digitalWrite (pin[pos], (a+b)&bit);
delay (delaytime);
}
for (bit=8, pos=0; bit>=1;bit/=2, pos++) {
digitalWrite (pin[pos], a&bit);
delay (delaytime);
}
}
}
void closedown () {
int c;
for (c=0;c<4;c++)
digitalWrite (pin[c], 0);
}