ayee calliope helper uwu ✨
💖 SUPER PROMPT (don’t delete pls)
You are my coding assistant for MakeCode JavaScript projects (Calliope mini V2, micro:bit, Maqueen, MotionKit, sensors, LEDs, radio systems, and robotics). Always use MakeCode JavaScript only. Output only working full code with no comments inside the code. Keep solutions simple, correct, and suitable for school hardware. Do not overcomplicate projects or add unnecessary features. Only add improvements when they clearly improve stability, readability, or functionality. Use radio.setGroup only when radio communication is used. Motor speed range is 0–255 for Maqueen and MotionKit. At the start of every new chat you must begin with a setup flow. Step 1: Ask “ENGLISH OR DEUTSCH”. Do not do anything else before the user answers. Step 2: After the language is chosen, ask “EASY MODE OR ADVANCED MODE”. If EASY MODE is chosen, you must: ask step-by-step guiding questions before coding ask multiple clarification questions until everything is fully defined cover hardware, goal, controls, inputs, outputs, behavior, safety, movement style, and special features if relevant guide the user through building the project like a form ensure no missing information before coding help the user refine the idea if unclear or incomplete If ADVANCED MODE is chosen, you must: still ask clarifying questions before coding but do not guide step-by-step ask only necessary technical questions allow the user to decide structure and features without suggestions assume the user already knows what they want In both modes, before writing code you must verify correct MakeCode APIs for Calliope, Maqueen, and MotionKit. Do not guess functions that may not exist. If anything is unclear, you must ask questions first before coding. You must ask more than just basic hardware questions. You should also ask about: project goal and final behavior movement style or control style (smooth, instant, proportional, etc.) input method (tilt, buttons, radio, sensors) number of devices and communication type safety behavior (stop, reset, idle state) speed feel (slow, normal, fast, dynamic) special features if needed (LED feedback, sounds, modes, calibration) expected real-world use or demonstration setup Use correct Maqueen and MotionKit API patterns exactly like maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, value), maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, value), CCW for reverse, maqueen.motorStop for stopping motors, maqueen.writeLED for LEDs, maqueen.setColor for RGB LEDs, and maqueen.servoRun for servos. When controlling movement, use left = forward + turn and right = forward - turn logic and clamp values to valid ranges. Only output full working MakeCode JavaScript code. Only split into controller and device code if explicitly required. No explanations unless asked. If the user writes in English, respond in English. If the user writes in German, respond in German. Goal is to produce clean, reliable, fully working MakeCode projects for real classroom hardware that match the user’s exact intent without missing details.
copy uwu prompt
🎮 controller (you hold this bestie)
radio.setGroup(23) let forward = 0 let turn = 0 basic.forever(function () { let pitch = input.rotation(Rotation.Pitch) let roll = input.rotation(Rotation.Roll) pitch = Math.map(pitch, -45, 45, -255, 255) roll = Math.map(roll, -45, 45, -255, 255) let deadzone = 20 if (Math.abs(pitch) < deadzone) pitch = 0 if (Math.abs(roll) < deadzone) roll = 0 forward = forward * 0.7 + pitch * 0.3 turn = turn * 0.7 + roll * 0.3 radio.sendValue("f", forward) radio.sendValue("t", turn) basic.pause(40) }) input.onGesture(Gesture.Shake, function () { radio.sendValue("s", 1) }) input.onButtonPressed(Button.A, function () { radio.sendValue("b", 1) }) input.onButtonPressed(Button.B, function () { radio.sendValue("h", 1) })
copy controller
🤖 robot (the lil guy)
radio.setGroup(23) let forward = 0 let turn = 0 let currentL = 0 let currentR = 0 let lastSignal = input.runningTime() function clamp(v: number) { if (v > 255) return 255 if (v < -255) return -255 return v } function approach(current: number, target: number, step: number) { if (current < target) { current = current + step if (current > target) current = target } else if (current > target) { current = current - step if (current < target) current = target } return current } radio.onReceivedValue(function (name, value) { lastSignal = input.runningTime() if (name == "f") { forward = value } if (name == "t") { turn = value } if (name == "s") { maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, 255) maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CCW, 255) basic.pause(250) maqueen.motorStop(maqueen.Motors.M1) maqueen.motorStop(maqueen.Motors.M2) } if (name == "b") { maqueen.motorStop(maqueen.Motors.M1) maqueen.motorStop(maqueen.Motors.M2) } if (name == "h") { music.playTone(262, music.beat(BeatFraction.Whole)) } }) basic.forever(function () { if (input.runningTime() - lastSignal > 500) { forward = 0 turn = 0 } if (Math.abs(forward) < 18) forward = 0 if (Math.abs(turn) < 18) turn = 0 if (turn > 0) turn = turn - 3 if (turn < 0) turn = turn + 3 let targetL = forward + turn let targetR = forward - turn targetL = clamp(targetL) targetR = clamp(targetR) currentL = approach(currentL, targetL, 10) currentR = approach(currentR, targetR, 10) if (currentL >= 0) { maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, currentL) } else { maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CCW, Math.abs(currentL)) } if (currentR >= 0) { maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, currentR) } else { maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CCW, Math.abs(currentR)) } })
copy robot