C++ Library for the PsiSwarm Robot - Version 0.8

Dependents:   PsiSwarm_V8_Blank_CPP Autonomia_RndmWlk

Fork of PsiSwarmV7_CPP by Psi Swarm Robot

Committer:
jah128
Date:
Sun Oct 16 14:12:49 2016 +0000
Revision:
9:dde9e21030eb
Parent:
8:6c92789d5f87
Child:
11:312663037b8c
Added LED class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jah128 0:d6269d17c8cf 1 /* University of York Robotics Laboratory PsiSwarm Library: Dances Source File
jah128 6:b340a527add9 2 *
jah128 6:b340a527add9 3 * Copyright 2016 University of York
jah128 6:b340a527add9 4 *
jah128 6:b340a527add9 5 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
jah128 6:b340a527add9 6 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
jah128 6:b340a527add9 7 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS
jah128 6:b340a527add9 8 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
jah128 6:b340a527add9 9 * See the License for the specific language governing permissions and limitations under the License.
jah128 0:d6269d17c8cf 10 *
jah128 0:d6269d17c8cf 11 * Library of simple predetermined movements
jah128 0:d6269d17c8cf 12 *
jah128 0:d6269d17c8cf 13 * File: dances.cpp
jah128 0:d6269d17c8cf 14 *
jah128 0:d6269d17c8cf 15 * (C) Dept. Electronics & Computer Science, University of York
jah128 0:d6269d17c8cf 16 * James Hilder, Alan Millard, Alexander Horsfield, Homero Elizondo, Jon Timmis
jah128 0:d6269d17c8cf 17 *
jah128 5:3cdd1a37cdd7 18 * PsiSwarm Library Version: 0.7
jah128 0:d6269d17c8cf 19 *
jah128 5:3cdd1a37cdd7 20 * October 2016
jah128 0:d6269d17c8cf 21 *
jah128 0:d6269d17c8cf 22 *
jah128 0:d6269d17c8cf 23 */
jah128 0:d6269d17c8cf 24
jah128 0:d6269d17c8cf 25
jah128 0:d6269d17c8cf 26 #include "psiswarm.h"
jah128 0:d6269d17c8cf 27
jah128 0:d6269d17c8cf 28 char vibrate_counter = 0;
jah128 0:d6269d17c8cf 29 Timeout dances_timeout;
jah128 0:d6269d17c8cf 30
jah128 0:d6269d17c8cf 31 ///Do a simple wiggle
jah128 0:d6269d17c8cf 32 void vibrate(void)
jah128 0:d6269d17c8cf 33 {
jah128 9:dde9e21030eb 34 if(vibrate_counter == 0)led.save_led_states();
jah128 0:d6269d17c8cf 35 if(vibrate_counter % 2 == 0) {
jah128 9:dde9e21030eb 36 led.set_leds(0xC7,0x00);
jah128 8:6c92789d5f87 37 motors.turn(1.0);
jah128 0:d6269d17c8cf 38 } else {
jah128 9:dde9e21030eb 39 led.set_leds(0x00,0xC7);
jah128 8:6c92789d5f87 40 motors.turn(-1.0);
jah128 0:d6269d17c8cf 41 }
jah128 0:d6269d17c8cf 42 vibrate_counter++;
jah128 0:d6269d17c8cf 43
jah128 0:d6269d17c8cf 44 if(vibrate_counter < 14) {
jah128 0:d6269d17c8cf 45 float wiggle_timeout_period = 0.06;
jah128 0:d6269d17c8cf 46 //Move less on first 'wiggle' so that we stay in roughly the same place!
jah128 0:d6269d17c8cf 47 if(vibrate_counter == 0) wiggle_timeout_period = 0.03;
jah128 0:d6269d17c8cf 48 dances_timeout.attach(vibrate, wiggle_timeout_period);
jah128 0:d6269d17c8cf 49 } else {
jah128 0:d6269d17c8cf 50 vibrate_counter = 0;
jah128 8:6c92789d5f87 51 motors.brake();
jah128 9:dde9e21030eb 52 led.restore_led_states();
jah128 0:d6269d17c8cf 53 }
jah128 0:d6269d17c8cf 54 }