From 8bd6089f9aa2657939db9f794f43e9f89978cb8e Mon Sep 17 00:00:00 2001 From: Justyna Att Ilczuk Date: Sun, 11 Nov 2012 18:06:19 +0100 Subject: [PATCH] Camera is working! --- Lasers_und_stuff/main.py | 38 +++++++++++++-- Lasers_und_stuff/main.pyc | Bin 9032 -> 9997 bytes Lasers_und_stuff/templates/status.html | 64 +++++++++++++++++++------ 3 files changed, 85 insertions(+), 17 deletions(-) diff --git a/Lasers_und_stuff/main.py b/Lasers_und_stuff/main.py index 55962e4..f652b37 100644 --- a/Lasers_und_stuff/main.py +++ b/Lasers_und_stuff/main.py @@ -14,10 +14,15 @@ import json from pygame.locals import * from Cannon import HackWAWCannonController from Cannon import Gunpoint +import pygame.camera app = flask.Flask(__name__) app.debug = True pygame.init() +pygame.camera.init() + +CAMERA_X = 400 +CAMERA_Y = 30 cannon = None @@ -41,17 +46,32 @@ def move_down(amount): cannon.move_down(amount) return "OK" +@app.route("/fire/", methods=["POST"]) +def fire(): + cannon.fire(); + +@app.route("/stop_fire/", methods=["POST"]) +def stop_fire(): + cannon.fired = False; + @app.route("/status") def status(): return json.dumps(cannon.get_data()) @app.route("/") def root(): - return flask.render_template("status.html", data=cannon.get_data()) + + +#Camera stuff + +camera = pygame.camera.Camera("/dev/video0", (640, 480)) +camera.start() + + def main(): #create the screen - window = pygame.display.set_mode((800, 600)) + window = pygame.display.set_mode((1200, 800)) GRAY = ( 182, 182, 182) VIOLET = (150, 100, 190) @@ -71,6 +91,7 @@ def main(): gunpoint = Gunpoint((5, 4), (200, 4), (5, 210)) + keep_running = True while keep_running: screen.draw_surface(cannon) @@ -115,6 +136,14 @@ def main(): screen.communicates.append("Calibrated") elif event.type == MOUSEBUTTONUP: + mousex, mousey = pygame.mouse.get_pos() + print mousex, mousey + x = (mousex - CAMERA_X)/640.0 + y = (CAMERA_Y + 480 - mousey)/480.0 + print x, y + position = gunpoint.aim((x, y)) + print position + cannon.position = position screen.change_color() print "Pygame thread exited." os.kill(os.getpid(), signal.SIGINT) @@ -202,7 +231,10 @@ class Screen: if cannon.fired: self.print_text("Fired!", 20, 150, (150, 20, 40), 40, self.window) - self.print_text([str(x) for x in cannon.get_data()].__str__(), 20, 300, (0, 0, 0), 30, self.window) + self.print_text([str(x) for x in cannon.get_data()].__str__(), 20, 300, (0, 0, 0), 30, self.window) + image = camera.get_image() + self.window.blit(image, (CAMERA_X, CAMERA_Y)) + pygame.display.flip() def print_text(self, text,xx,yy,color,text_size, screen): diff --git a/Lasers_und_stuff/main.pyc b/Lasers_und_stuff/main.pyc index 223d4cb84d08afc98cadc670ef8007951836380d..5cec598d5dc2a40f5274266291a53f77893819b2 100644 GIT binary patch delta 3123 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
+

Hello in cannon controller, adjust angles!

+

Angles can be in range 0:255

Up - Down - Left - Right -

-

-

Status

{{data}}

+ Down + Left + Right +

Fire! Stop

+ +

Status:

{{data}}

{% endblock %} \ No newline at end of file