Hallo
Davon habe ich schon immer geträumt, aber rein mechanisch (mit lego oder fischertechnik..) hat das nie funktioniert:
Bild hier
http://www.youtube.com/watch?v=SZ3aWmsqfFQ
Nach vielen Versuchen kann ich nun sagen, dass die Fertigungstoleranzen meiner Bio-Dominosteine absolut unakzeptabel sind. Ich vermute, die werden aus massivem Holz rausgebissen. Ich werde dem Hersteller/Vertrieb mal eine Kopie der Videos senden...
Beim Aussortieren der "schräg" gesägten Steine:
Bild hier Bild hier
http://www.youtube.com/watch?v=6RqBD0XeheQ
http://www.youtube.com/watch?v=DcgoIOig_Mk
Das Programm auf Basis meiner Mini-Lib:
Doku des Greifers folgt nochCode:// Domino Day für den RP6 16.11.07 mic #include "rblib.h" #include "rblib.c" uint8_t y, z; ISR(TIMER0_COMP_vect) { static uint16_t count=0; //if(count>x) PORTA &= ~16; else PORTA |= 16; // E_INT1 (Pin8) if(count>y) PORTC &= ~1; else PORTC |= 1; // SCL (Pin10) if(count>z) PORTC &= ~2; else PORTC |= 2; // SDA (Pin12) if(count<1000)count++; else count=0; } void servo_init(void) { //DDRA |= 16; // E_INT1 als Ausgang DDRC |= 3; // SCL und SDA als Ausgang TCCR0 = (0 << WGM00) | (1 << WGM01); // CTC-Mode TCCR0 |= (0 << COM00) | (0 << COM01); // ohne OCR-Pin TCCR0 |= (0 << CS02) | (1 << CS01) | (0 << CS00); // prescaler /8 TIMSK = (1 << OCIE0); // Interrupt ein OCR0 = 9; // 100kHz? } int main(void) { rblib_init(); servo_init(); setLEDs(0b1001); setMotorDir(FWD,FWD); setMotorPWM(0,0); z=225; y=100; delay(255); while(1){ y=161; // hoch delay(100); z=211; // greifen delay(50); y=45; // runter delay(50); setMotorDir(BWD,BWD); // zurück setMotorPWM(50,50); delay(50); setMotorPWM(0,0); delay(50); z=202; // loslassen delay(150); z=195; // auf Abstand delay(50); setMotorDir(FWD,FWD); // vor setMotorPWM(50,50); delay(100); setMotorPWM(0,0); } return 0; }
Gruß
mic







Zitieren


Lesezeichen