void main(void) {
    byte len, i;
    char msg[1];
    int value;
    
    initSquareWear();
    setModeOutput(pinC7);
    latC7 = 0;
    openUSBSerial();    // open USB serial port
    putrsUSBSerial("Type a single digit number:\r\n");
    while(1) {
        len=getUSBSerial(msg, 1);   // get one character from USB serial
        if(len!=0 && msg[0]>='0' && msg[0]<='9') {
            value = msg[0]-'0'; // extract value
            if (value<10) {
                putrsUSBSerial("On for ");
                putnUSBSerial(msg, 1);
                putrsUSBSerial(" seconds.\r\n");
                latC7 = 1;
                delaySeconds(value);
                latC7 = 0;
            }
        }
        pollUSBSerial();
    }
}
Esempio n. 2
0
// This function is called over and over in an infinite loop.
void loop(void) {
  if (HIGH == digitalRead(LED1)) {
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, HIGH);
  } else {
    digitalWrite(LED1, HIGH);
    digitalWrite(LED2, LOW);
  }

  delaySeconds(1);
}
void main(void) {
    char msg[6];
    int counter=0;
    initSquareWear();

    // open USART, default baud rate 57600 (defined in SquareWear.h)
    openUSART();
    putrsUSART("Begin.\r\n");   // write a constant string
    while(1) {
        itoa(counter, msg);
        putsUSART(msg);         // write a string
        putrsUSART("\r\n");
        latC7 = !latC7;
        delaySeconds(1);
        counter++;
    }
}
Esempio n. 4
0
void main(void)
{
  int32 count = 0;
  printf("Written by David Manouchehri\n\r");
  
  while(1)
  { 
    signed int i;
    for (i = 7; i >= 0; i--) 
    {
      printf("i is %d\n\r", i);
      binaryLEDs(i);
      delaySeconds(2);
    }
  
    //Routine stuff
    printf("Number of runs: %ld\n\r", count);
    count++;    
    //delaySeconds(1);
  }
}
void main(void) {
    char msg[1];
    int value;

    initSquareWear();
    latC7 = 0;
    openUSART();
    putrsUSART("Type a single digit number:\r\n");
    while(1) {
        getsUSART(msg, 1);
        if(msg[0]>='0' && msg[0]<='9') {
            value = msg[0]-'0';
            if (value<10) {
                putrsUSART("On for ");
                WriteUSART(msg[0]);
                putrsUSART(" seconds.\r\n");
                latC7 = 1;
                delaySeconds(value);
                latC7 = 0;
            }
        }
    }
}
Esempio n. 6
0
/**
 * Pause the task for a specified time.
 *
 * Pause the execution of the program for a specified period of time given in
 * seconds.
 * Motors will continue to run at their last assigned values, and sensors will
 * continue to
 * update. Only the task containing the wait will pause until the wait time is
 * expired.
 *
 * @param seconds Length of time to pause, in seconds.
 */
void Wait(double seconds) {
  if (seconds < 0.0) return;
  delaySeconds(seconds);
}
Esempio n. 7
0
void main(void)
{
  int32 count = 0;
  unsigned long int reading, average, total;
  float readingVolts;

  unsigned long int history[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

  printf("Written by David Manouchehri\n\r");

  setup_adc_ports(RA0_ANALOG);
  setup_adc(ADC_CLOCK_INTERNAL);

  set_adc_channel(0);
  delay_us(10);
  while(1)
  {
    reading = read_adc();
    readingVolts = (reading * 5.0)/255;
    delay_us(10);

    //printf("Reading is %lu = %4.2f Volts (float)\r\n", reading, readingVolts);
    
    if(readingVolts >= 3.33)
    {
      singleLED(0, 1);
      singleLED(1, 0);
      singleLED(2, 0);
    }
    else if(readingVolts >= 1.66)
    {
      singleLED(1, 1);
      singleLED(0, 0);
      singleLED(2, 0);
    }
    else
    {
      singleLED(2, 1);
      singleLED(0, 0);
      singleLED(1, 0);
    }
    
    //history[9] = 1;
    for (int i = 0; i < 10; i++)
    {
      history[i] = history[i + 1];
    }

    history[9] = reading;

    average = 0;
    for (int j = 0; j < 10; j++)
    {
      average += history[j];
      unsigned long int tempy =  history[j];
      //printf(" %lu ", tempy);
    }
    //printf(" Done\r\n");

    delaySeconds(1);
    
    printf(" %lu ", average);

    /*singleLED(5, 0); 
    singleLED(3, 1);
    delay_ms(reading);
    singleLED(3, 0);
    singleLED(4, 1);
    delay_ms(reading);
    singleLED(4, 0);
    singleLED(5, 1);
    delay_ms(reading);*/

    //delay_ms(100);
    //flipLED(0);
    //Routine stuff
    //printf("Number of runs: %ld\n\r", count);
    count++;    
    //delay_ms(100);
  }
}
void MainWindow::processImage()
{
    // Checking if we can process something at all.
    if (processingMat.empty())
        return;

    // 1. Localizing centers of holes.

    // Circle structuring element.
    int size = 44;
    cv::Mat circleElement = MatFiguresGenerator::ring(size);
    // For localizing centers result.
    cv::Mat centersResult;
    // Applying erosion with hole ring.
    cv::erode(processingMat, centersResult, circleElement);
    // Showing result of the operation.
    renderMat(centersResult);
    delaySeconds(1);

    // 2. Creating big octagons to fill holes.

    // Octagon structuring element.
    size = 39;
    cv::Mat octagonElement = MatFiguresGenerator::octagon(size);
    // To store result of the op.
    cv::Mat octagonsResult;
    // Making centers of holes bigger.
    cv::dilate(centersResult, octagonsResult, octagonElement);
    // Showing result.
    renderMat(octagonsResult);
    delaySeconds(1);

    // 3. Filling holes.

    // To store result.
    cv::Mat holesHideResult;
    // Adding holes' patches.
    cv::bitwise_or(processingMat, octagonsResult, holesHideResult);
    // Result.
    renderMat(holesHideResult);
    delaySeconds(1);

    // 4. Outer rings.

    // Setting radius of the structuring loop.
    size = 117;
    cv::Mat teethCircleResult;
    // Getting loop without teeth.
    cv::Mat gearBody = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(size, size), cv::Point(size / 2, size / 2));
    cv::morphologyEx(holesHideResult, teethCircleResult, cv::MORPH_OPEN, gearBody);

    // To store the biggest loop.
    cv::Mat teethOuterResult;
    // Enlarging previous loop to include teeth.
    cv::Mat samplingRingSpacer = MatFiguresGenerator::ring(5);
    cv::dilate(teethCircleResult, teethCircleResult, samplingRingSpacer);

    // Enlarging outer loop to include outer part of teeth.
    cv::Mat samplingRingWidth = MatFiguresGenerator::ring(5);
    cv::dilate(teethCircleResult, teethOuterResult, samplingRingSpacer);

    // Excluding smaller loop from the bigger one to get the circle containing teeth.
    cv::bitwise_xor(teethOuterResult, teethCircleResult, teethCircleResult);
    // Showing.
    renderMat(teethCircleResult);
    delaySeconds(1);

    // 5. Teeth position.

    // To store all teeth here.
    cv::Mat teethResult;
    // Getting an intersection of teeth and covering circle.
    cv::bitwise_and(processingMat, teethCircleResult, teethResult);
    renderMat(teethResult);
    delaySeconds(1);

    // 6. Faults detection.

    // For result.
    cv::Mat faultsResult;
    // Optimal detection structure.
    size = 6;
    cv::Mat tipSpacing = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(size, size), cv::Point(size / 2, size / 2));
    cv::dilate(teethResult, faultsResult, tipSpacing);
    // Showing.
    renderMat(faultsResult);
    delaySeconds(1);

    // 7. Faults highlighting.

    // For final result.
    cv::Mat faultsHighlightingResult;
    // First action - subtracting.
    cv::subtract(teethCircleResult, faultsResult, faultsHighlightingResult);
    // Highlighting struct. element.
    size = 15;
    cv::Mat defectCue = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(size, size), cv::Point(size / 2, size / 2));
    cv::dilate(faultsHighlightingResult, faultsHighlightingResult, defectCue);
    cv::bitwise_or(faultsHighlightingResult, faultsResult, faultsHighlightingResult);
    renderMat(faultsHighlightingResult);
}