Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nur P0 bis P3 #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 32 additions & 139 deletions KISS-MINT-MOTOR.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,3 @@
declare const enum MotorPin {
//% block="P0"
P0 = 0, // edge connector 0
//% block="P1"
P1 = 1, // edge connector 1
//% block="P2"
P2 = 2, // edge connector 2
//% block="P3"
P3 = 3,
//% block="C16"
C16 = 4, // edge connector 16
//% block="C17"
C17 = 5, // edge connector 17
//% block="C18"
C18 = 6, // edge connector 18
//% block="C19"
C19 = 7, // edge connector 19
};




declare const enum MyMotor {
//% block="A"
Expand Down Expand Up @@ -51,7 +30,7 @@ namespace KissMintMotor {
pins.digitalWritePin(M2, richtung[richtungsWert][1])
}
/**
* Mit diesem Block kann eine doppel H-Brücke (vgl. L293D) über die PIN's P0, P1, P1, P1 angesteuert werden.
* Mit diesem Block kann eine doppel H-Brücke (z.B. L293D) über die PIN's P0, P1, P1, P1 angesteuert werden.
* Verbinde:
* P0 mit IN1
* P1 mit IN2
Expand All @@ -61,6 +40,7 @@ namespace KissMintMotor {
* @param R wähle die Richtung des Motors
*/
//% block
//% blockId="DigitalMotor" block="DigitalMotor Motor %M | Richtung %R | "

export function DigitalMotor(M: MyMotor, R: Richtung) {
let MotorFixedPinList: DigitalPin[][] = [[DigitalPin.P0, DigitalPin.P1], [DigitalPin.P2, DigitalPin.P3]]
Expand All @@ -76,133 +56,46 @@ namespace KissMintMotor {

}



/**
*
* Mit diesem Block kann ein Motor an einer doppel H-Brücke (vgl. L293D) über freigewählte PIN's gesteuert werden.
* Dieser Block steuert einen Schrittmotor z.B. 28BYJ-48 über eine H-Brücke(L293D) oder Darlington-Array(ULN2003)
* Wie viele Schritte = 1 Umdrehung entspricht ist vom Motor abhängig
* @param S wähle um wieviele Schritte sich der motor drehen soll
* @param R wähle die Richtung des Motors
* @param A1 wähle den Anschluss1 für deinen Motor
* @param A2 wähle den Anschluss2 für deinen Motor
*
*/
//% block
export function Motor_A_PinWahl(R: Richtung, A1: MotorPin, A2: MotorPin) {
let pinlist: DigitalPin[] = [DigitalPin.P0, DigitalPin.P1, DigitalPin.P2, DigitalPin.P3, DigitalPin.C16, DigitalPin.C17, DigitalPin.C18, DigitalPin.C19]

startMotor(pinlist[A1], pinlist[A2], R)


}



/**
*
* Mit diesem Block kann ein Motor an einer doppel H-Brücke (vgl. L293D) über freigewählte PIN's gesteuert werden.
* @param R wähle die Richtung des Motors
* @param A1 wähle den Anschluss1 für deinen Motor
* @param A2 wähle den Anschluss2 für deinen Motor
*
*/
//% block
export function Motor_B_PinWahl(R: Richtung, B1: MotorPin, B2: MotorPin) {
let pinlist: DigitalPin[] = [DigitalPin.P0, DigitalPin.P1, DigitalPin.P2, DigitalPin.P3, DigitalPin.C16, DigitalPin.C17, DigitalPin.C18, DigitalPin.C19]

startMotor(pinlist[B1], pinlist[B2], R)

}








/**
* Dieser Block steuert einen Schrittmotor z.B. 28BYJ-48 über eine H-Brücke(L293D) oder Darlington-Array(ULN2003)
* Wie viele Schritte = 1 Umdrehung entspricht ist vom Motor abhängig
* @param S wähle um wieviele Schritte sich der motor drehen soll
* @param R wähle die Richtung des Motors

* Verbinde:
* P0 mit IN1
* P1 mit IN2
* P1 mit IN3
* P1 mit IN4
*/

* Verbinde:
* P0 mit IN1
* P1 mit IN2
* P1 mit IN3
* P1 mit IN4
*/
//% block
//% blockId="SchrittMotor" block="SchrittMotor Richtung %R | Schritte %S|"
export function SchrittMotor(R: Richtung, S: number) {
let i = 0;
let schrittBelegung: number[][] = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
let schrittMotorPinBelegung: DigitalPin[] = [DigitalPin.P0, DigitalPin.P1, DigitalPin.P2, DigitalPin.P3]

if (R == 0) {
while (i < S) {
i++
pins.digitalWritePin(DigitalPin.P0, 1)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 0)
basic.pause(2)
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 1)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 0)
basic.pause(2)
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 1)
pins.digitalWritePin(DigitalPin.P3, 0)
basic.pause(2)
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 1)
basic.pause(2)
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 0)
schrittBelegung = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] //vorwaerts Schrittbelegung

}
} else if (R == 1) {
schrittBelegung = [[0, 0, 0, 1], [0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0]] //rueckwaerts Schrittbelegung
}

else if (R == 1) {
while (i < S) {

i++
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 1)
basic.pause(2)
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 1)
pins.digitalWritePin(DigitalPin.P3, 0)
basic.pause(2)
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 1)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 0)
basic.pause(2)
pins.digitalWritePin(DigitalPin.P0, 1)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 0)
basic.pause(2)
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 0)
if (R != 2) {
for (let schritte = 0; schritte < S; schritte++) {
for (let teilschritt = 0; teilschritt < 4; teilschritt++) {
for (let index = 0; index < 4; index++) {
pins.digitalWritePin(schrittMotorPinBelegung[index], schrittBelegung[teilschritt][index])
}
basic.pause(1)
}
}

}




pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P3, 0)
}


}

}