Панель управления (Ауыл мектебі)
Привет, Команда "Сұңқар"! 🦅
Ваш комплект FIRST Tech Challenge отправлен из Алматы по программе шеринга. Пока детали в пути, пройдите базовые уроки программирования и подготовки портфолио.
Экономика нашей команды
FIRST Tech Challenge: INTO THE DEEP
Официальная информация о текущем сезоне. Изучите правила игры, чтобы понять, какого робота нужно спроектировать вашей команде.
INTO THE DEEP
В этом сезоне командам предстоит погрузиться в океанские глубины! Роботы должны собирать "образцы" (Samples) и "образцы погружения" (Specimens), а также парковаться в зоне глубоководных исследований.
Gracious Professionalism®
Это основа FIRST. Мы соревнуемся изо всех сил, но при этом относимся друг к другу с уважением и добротой. В FIRST нет проигравших, если вы учитесь новому!
Официальная документация и материалы проекта
Остазлар (Менторлар)
Безнең остазлар командагызга робот җыярга, код язарга һәм ярышларга әзерләнергә ярдәм итәчәк.
mooneye
Төп остаз
Шахан
Техник остаз
Бексұлтан
Программалау остазы
Арафат
Дизайн остазы
Курс: Старт для сельских школ
Официальная подборка материалов для новичков, включая плейлист «Learn Java for Robotics (FTC)» от эксперта Brogan Pratt. Доступно скачивание для офлайн просмотра.
Дорожная карта команды
Основы FIRST
Изучение правил сезона, ценностей и ролей в команде.
Сборка и CAD
Работа с деталями REV, конструирование шасси и 3D-моделирование.
Программирование
Java OnBot, настройка моторов, сенсоры и автономный период.
Портфолио
Оформление инженерной книги и подготовка к защите перед жюри.
Что такое FIRST?
Базовые принципы соревнований, философия Gracious Professionalism и с чего начать команде.
Основы Java для FTC
Классы, переменные и области видимости. Что нужно знать перед написанием кода для робота.
Сенсоры и Индикаторы REV
Программирование LED индикаторов и базовых датчиков для автономного периода.
Тюнинг PIDF-контроллеров
Учимся настраивать скорость моторов с помощью PIDF для идеальной точности механизмов.
3D Моделирование (Onshape)
Как спроектировать и распечатать собственную деталь на 3D-принтере, если нужной нет в наборе.
Одометрия и RoadRunner
Математика точного позиционирования. Как заставить робота двигаться по идеальной траектории в автономе.
Реестр доступных деталей
Городские команды делятся оборудованием прошлых сезонов. Заявки отправляются куратору.
REV Control Hub
Б/У 1 сезон. Главный контроллер для робота FTC. Предоставлено командой 12345 (г. Астана).
goBILDA Yellow Jacket
Моторы 312 RPM с энкодерами. Идеальны для шасси. Предоставлено командой 6789 (г. Алматы).
Основы OnBot Java (FTC)
Изучайте код прямо в браузере. Практика для автономного периода.
Модули кода
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.DcMotor;
@TeleOp(name="Basic: Linear OpMode", group="Linear Opmode")
public class BasicOpMode_Linear extends LinearOpMode {
// Объявление моторов
private DcMotor leftDrive = null;
private DcMotor rightDrive = null;
@Override
public void runOpMode() {
telemetry.addData("Status", "Initialized");
telemetry.update();
// Инициализация
leftDrive = hardwareMap.get(DcMotor.class, "left_drive");
rightDrive = hardwareMap.get(DcMotor.class, "right_drive");
waitForStart();
}
}
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.DcMotor;
@TeleOp(name="Basic: Linear OpMode", group="Linear Opmode")
public class BasicOpMode_Linear extends LinearOpMode {
// Объявление моторов
private DcMotor leftDrive = null;
private DcMotor rightDrive = null;
@Override
public void runOpMode() {
telemetry.addData("Status", "Initialized");
telemetry.update();
// Инициализация
leftDrive = hardwareMap.get(DcMotor.class, "left_drive");
rightDrive = hardwareMap.get(DcMotor.class, "right_drive");
waitForStart();
}
}
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.Servo;
@TeleOp(name="Servo Test", group="Training")
public class Servo_Control extends LinearOpMode {
// Объявление сервомотора (например, для клешни)
private Servo clawServo = null;
@Override
public void runOpMode() {
// Привязка имени "claw" из конфигурации Robot Controller
clawServo = hardwareMap.get(Servo.class, "claw");
// Установка начальной позиции (0.0 - 1.0)
clawServo.setPosition(0.0);
waitForStart();
while (opModeIsActive()) {
// Открыть клешню на кнопку A
if (gamepad1.a) {
clawServo.setPosition(1.0);
}
// Закрыть клешню на кнопку B
else if (gamepad1.b) {
clawServo.setPosition(0.0);
}
}
}
}
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.hardware.DcMotor;
@Autonomous(name="Auto: Drive Time")
public class Auto_DriveTime extends LinearOpMode {
private DcMotor leftDrive = null;
private DcMotor rightDrive = null;
@Override
public void runOpMode() {
leftDrive = hardwareMap.get(DcMotor.class, "left_drive");
rightDrive = hardwareMap.get(DcMotor.class, "right_drive");
// Реверс одного из моторов для прямого движения
leftDrive.setDirection(DcMotor.Direction.REVERSE);
waitForStart();
// Шаг 1: Едем вперед на 50% мощности
leftDrive.setPower(0.5);
rightDrive.setPower(0.5);
// Ждем 2 секунды (2000 миллисекунд)
sleep(2000);
// Шаг 2: Останавливаем моторы
leftDrive.setPower(0);
rightDrive.setPower(0);
}
}
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.hardware.ColorSensor;
@TeleOp(name="Color Sensor Test")
public class ColorSensor_Test extends LinearOpMode {
private ColorSensor colorSensor;
@Override
public void runOpMode() {
// Получаем датчик цвета из конфигурации
colorSensor = hardwareMap.get(ColorSensor.class, "color_sensor");
// Включаем встроенный LED-светодиод датчика
colorSensor.enableLed(true);
waitForStart();
while (opModeIsActive()) {
// Выводим значения RGB на экран (Driver Station)
telemetry.addData("Red", colorSensor.red());
telemetry.addData("Green", colorSensor.green());
telemetry.addData("Blue", colorSensor.blue());
if (colorSensor.red() > 200) {
telemetry.addData("Статус", "ОБНАРУЖЕНА КРАСНАЯ ЛИНИЯ");
}
telemetry.update();
}
}
}