Day 17

Homework:
/* This program reads a seismic data file and then */
/* determines the times of possible seismic events. */
#include <stdio.h>
#define FILENAME "seismic1.txt"
#define MAX_SIZE 1000
#define THRESHOLD 1.5
int main(void)
{
/* Declare variables and function prototypes. */
int k, npts, short_window, long_window;
double sensor[MAX_SIZE], time_incr, short_power,
long_power, ratio;
FILE *file_ptr;
double power_w(double * ptr, int n);
/* Read sensor data file. */
file_ptr = fopen(FILENAME, "r");
if (file_ptr == NULL)
printf("Error opening input file. \n");
else
{
fscanf(file_ptr, "%d %lf", &npts, &time_incr);
if (npts > MAX_SIZE)
printf("Data file too large for array. \n");
else
{
/* Read data into an array. */
for (k = 0; k <= npts - 1; k++)
fscanf(file_ptr, "%lf", &sensor[k]);
/* Read window sizes from the keyboard. */
printf("Enter number of points for short window: \n");
scanf("%d", &short_window);
printf("Enter number of points for long window: \n");
scanf("%d", &long_window);
/* Compute power ratios and search for events. */
for (k = long_window - 1; k <= npts - 1; k++)
{
short_power = power_w(&sensor[k], short_window);
long_power = power_w(&sensor[k], long_window);
ratio = short_power / long_power;
if (ratio > THRESHOLD)
printf("Possible event at %f seconds \n",
time_incr * k);
}
/* Close file. */
fclose(file_ptr);
}
}
return 0;
}
/*????????????????????????????????????????????????????????????-*/
/* This function computes the average power in a specified */
/* window of a double array. */
double power_w(double *ptr, int n)
{
/* Declare and initialize variables. */
int k;
double xsquare = 0;
/* Compute sum of values squared in the array x. */
for (k = 0; k <= n - 1; k++)
xsquare += *(ptr - k) * (*(ptr - k));
/* Return the average squared value. */
return xsquare / n;
}


Lab:
// Arduino pin numbers
const int SW_pin = 2; // digital pin connected to switch output
const int X_pin = 0; // analog pin connected to X output




const int Y_pin = 1; // analog pin connected to Y output
int M1_Left = 6; //Motor Input 1
int M1_Right = 5;
int M2_Left = 10;
int M2_Right = 9;
boolean inPin1 = LOW;
boolean inPin2 = HIGH;
boolean inPin5 = LOW;
boolean inPin6 = HIGH;
char data;

void setup() {
    pinMode(M1_Left, OUTPUT);
  pinMode(M1_Right , OUTPUT);
  pinMode(M2_Right, OUTPUT);
  pinMode(M2_Left, OUTPUT);
 pinMode(SW_pin, INPUT);
 digitalWrite(SW_pin, HIGH);
 Serial.begin(115200);
void forward();
void reverse();



}
void loop() {
// Serial.print("\n Switch: ");
// Serial.print(digitalRead(SW_pin));
// Serial.print("\n");
// Serial.print("X-axis: ");
// Serial.print(analogRead(X_pin));
// Serial.print("\n");
// Serial.print("Y-axis: ");
// Serial.println(analogRead(Y_pin));
// Serial.print("\n\n");
// delay(50);
int x,y;
x=analogRead(X_pin);
y=analogRead(Y_pin);
x=map(x, 0, 1023, -100, 100);
y=map(y, 0, 1023, -100, 100);
  if (y > 5)
  {
    speedup(100-y);
  
  }
  else if (y < -5)
  {
    speeddown(100+y);
  
  }
 else
 {
  stop();
  }
  //Serial.println(x);
  Serial.println(y);
}
void forward()
{
  digitalWrite(M1_Left, HIGH);
  digitalWrite(M1_Right, LOW);
  digitalWrite(M2_Left, HIGH);
  digitalWrite(M2_Right, LOW);

}
void reverse()
{
   digitalWrite(M1_Left,LOW);
  digitalWrite(M1_Right,HIGH);
   digitalWrite(M2_Left, LOW);
  digitalWrite(M2_Right, HIGH);

}

void speedup(int val)
{

    forward();
    delay(val); //1 sg
    stop();
   // delay(20);
}
void speeddown(int val)
{

    reverse();
    delay(val); //1 sg
    stop();
    //delay(20);
}
void stop()
{
  digitalWrite(M1_Left, LOW);
  digitalWrite(M1_Right , LOW);
  digitalWrite(M2_Left, LOW);
  digitalWrite(M2_Right, LOW);
}

Comments

Popular posts from this blog

Homework 6

Another Day 23

Homework4