
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.robotika.sk/robowiki/index.php?action=history&amp;feed=atom&amp;title=Radar_-_Code</id>
		<title>Radar - Code - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.robotika.sk/robowiki/index.php?action=history&amp;feed=atom&amp;title=Radar_-_Code"/>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Radar_-_Code&amp;action=history"/>
		<updated>2026-05-05T02:10:00Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Radar_-_Code&amp;diff=11315&amp;oldid=prev</id>
		<title>Robot: Created page with &quot;Return back to project page:  Radar - Jakub Vojtek  Python code for the Radar project: &lt;syntaxhighlight lang=python&gt; from buildhat impor...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Radar_-_Code&amp;diff=11315&amp;oldid=prev"/>
				<updated>2024-06-07T10:37:48Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;Return back to project page: &lt;a href=&quot;/robowiki/index.php?title=Spike_Prime_-_Radar_-_Jakub_Vojtek&quot; title=&quot;Spike Prime - Radar - Jakub Vojtek&quot;&gt; Radar - Jakub Vojtek&lt;/a&gt;  Python code for the Radar project: &amp;lt;syntaxhighlight lang=python&amp;gt; from buildhat impor...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Return back to project page: [[Spike Prime - Radar - Jakub Vojtek| Radar - Jakub Vojtek]]&lt;br /&gt;
&lt;br /&gt;
Python code for the Radar project:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=python&amp;gt;&lt;br /&gt;
from buildhat import Motor, DistanceSensor&lt;br /&gt;
import pygame&lt;br /&gt;
import time&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
motor = Motor('D')&lt;br /&gt;
eyes = DistanceSensor('A')&lt;br /&gt;
&lt;br /&gt;
def setup():&lt;br /&gt;
    pygame.init()&lt;br /&gt;
    pygame.display.set_caption('Radar')&lt;br /&gt;
    WIDTH, HEIGHT = 800, 800&lt;br /&gt;
    screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.SRCALPHA)&lt;br /&gt;
&lt;br /&gt;
    background_image = pygame.image.load(&amp;quot;pictures/radar_bg.png&amp;quot;).convert()&lt;br /&gt;
    background_image = pygame.transform.scale(background_image, (WIDTH, HEIGHT))&lt;br /&gt;
&lt;br /&gt;
    motor.start(2)&lt;br /&gt;
&lt;br /&gt;
    return screen, background_image, WIDTH, HEIGHT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def draw_radar_arm(screen, center, angle, length):&lt;br /&gt;
    end_x = center[0] + length * math.cos(math.radians(angle))&lt;br /&gt;
    end_y = center[1] - length * math.sin(math.radians(angle))&lt;br /&gt;
    pygame.draw.line(screen, (0, 255, 0), center, (end_x, end_y), 2)&lt;br /&gt;
    pygame.draw.circle(screen, (0, 255, 0), (int(end_x), int(end_y)), 5)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def draw_shadow(screen, center, angle, distance, max_distance, arm_length):&lt;br /&gt;
    for dist in range(distance, max_distance + 1, 10):&lt;br /&gt;
        shadow_x = center[0] + (dist / max_distance) * arm_length * math.cos(math.radians(angle))&lt;br /&gt;
        shadow_y = center[1] - (dist / max_distance) * arm_length * math.sin(math.radians(angle))&lt;br /&gt;
        pygame.draw.circle(screen, (255, 102, 102, 128), (int(shadow_x), int(shadow_y)), 5)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def draw_text(screen, text, position, font, color=(255, 255, 255)):&lt;br /&gt;
    text_surface = font.render(text, True, color)&lt;br /&gt;
    screen.blit(text_surface, position)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def update_radar(screen, background_image, WIDTH, HEIGHT, max_distance=2000):&lt;br /&gt;
    center = (WIDTH // 2, HEIGHT // 2)&lt;br /&gt;
    arm_length = 345&lt;br /&gt;
    obstacle_positions = []&lt;br /&gt;
&lt;br /&gt;
    closest_distance = float('inf')&lt;br /&gt;
    farthest_distance = float('-inf')&lt;br /&gt;
&lt;br /&gt;
    angle = 0&lt;br /&gt;
    running = True&lt;br /&gt;
    font = pygame.font.Font(None, 25)&lt;br /&gt;
&lt;br /&gt;
    while running:&lt;br /&gt;
        for event in pygame.event.get():&lt;br /&gt;
            if event.type == pygame.QUIT:&lt;br /&gt;
                running = False&lt;br /&gt;
            elif event.type == pygame.KEYDOWN:&lt;br /&gt;
                if event.key == pygame.K_LEFT:&lt;br /&gt;
                    max_distance = max(500, max_distance - 100)&lt;br /&gt;
                elif event.key == pygame.K_RIGHT:&lt;br /&gt;
                    max_distance = min(2000, max_distance + 100)&lt;br /&gt;
&lt;br /&gt;
        screen.blit(background_image, (0, 0))&lt;br /&gt;
&lt;br /&gt;
        angle = motor.get_position() % 360&lt;br /&gt;
        draw_radar_arm(screen, center, angle, arm_length)&lt;br /&gt;
        distance = eyes.get_distance()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if distance &amp;gt; 0 and distance &amp;lt; max_distance:&lt;br /&gt;
            scaled_distance = (distance / max_distance) * arm_length&lt;br /&gt;
            obstacle_x = center[0] + scaled_distance * math.cos(math.radians(angle))&lt;br /&gt;
            obstacle_y = center[1] - scaled_distance * math.sin(math.radians(angle))&lt;br /&gt;
            obstacle_positions.append((obstacle_x, obstacle_y, distance, angle, time.time()))&lt;br /&gt;
&lt;br /&gt;
            if distance &amp;lt; closest_distance:&lt;br /&gt;
                closest_distance = distance&lt;br /&gt;
            if distance &amp;gt; farthest_distance:&lt;br /&gt;
                farthest_distance = distance&lt;br /&gt;
&lt;br /&gt;
        # draw obstacles and shadows&lt;br /&gt;
        current_time = time.time()&lt;br /&gt;
        for obstacle in obstacle_positions:&lt;br /&gt;
            if current_time - obstacle[4] &amp;lt; 2:&lt;br /&gt;
                draw_shadow(screen, center, obstacle[3], obstacle[2], max_distance, arm_length)&lt;br /&gt;
                pygame.draw.circle(screen, (255, 0, 0), (int(obstacle[0]), int(obstacle[1])), 5)&lt;br /&gt;
            else:&lt;br /&gt;
                obstacle_positions.remove(obstacle)&lt;br /&gt;
&lt;br /&gt;
        draw_text(screen, f'Max View Distance: {max_distance}', (10, 10), font)&lt;br /&gt;
        draw_text(screen, f'Closest Object: {closest_distance}', (350, 10), font)&lt;br /&gt;
        draw_text(screen, f'Farthest Object: {farthest_distance}', (600, 10), font)&lt;br /&gt;
&lt;br /&gt;
        pygame.display.flip()&lt;br /&gt;
        time.sleep(0.05)&lt;br /&gt;
&lt;br /&gt;
    pygame.quit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    screen, background_image, WIDTH, HEIGHT = setup()&lt;br /&gt;
    max_distance = 1000&lt;br /&gt;
    update_radar(screen, background_image, WIDTH, HEIGHT, max_distance)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robot</name></author>	</entry>

	</feed>