Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //constants
- static const int IN = LOW;
- static const int OUT = HIGH;
- static const int pulseDelayTime = 6;
- //pins
- int indexPin = 2; //8 on the drive INDEX
- int track0Pin = 3; //26 on the drive. TRACK 0
- int dirPin = 6; //18 on the drive. DIRECTION
- int stepPin = 7; //20 on the drive. STEP
- int motorEnableBPin = 9; //16 on the drive. MOTOR ENABLE B
- int dataPin = 10; //30 on the drive. RDATA
- int writeDataPin = 4; //22 on the drive WDATE
- int writeEnablePin = 5; //24 on the drive WGATE
- byte data[10] = {0};
- unsigned int index = 0;
- unsigned int pos = 0;
- void setup() {
- //initial delay
- delay(3000);
- //setup serial monitor
- Serial.begin(9600);
- //setup pins.
- pinMode(dirPin, OUTPUT);
- pinMode(stepPin, OUTPUT);
- pinMode(motorEnableBPin, OUTPUT);
- pinMode(indexPin, INPUT_PULLUP);
- pinMode(track0Pin, INPUT_PULLUP);
- pinMode(dataPin, INPUT_PULLUP);
- pinMode(writeDataPin, OUTPUT);
- pinMode(writeEnablePin, OUTPUT);
- //turn the motor off initially
- digitalWrite(motorEnableBPin, HIGH);
- stepAllTheWayOut();
- //print state here.
- Serial.println("Setup done.");
- writeData(170);
- delay(500);
- readData();
- }
- //byte mode(data[10]){
- // return data[0];
- //}
- //move the head towards the outside a little
- void stepOut() {
- digitalWrite(dirPin,HIGH);
- // Serial.println("SteppingOut");
- stepPulse();
- }
- //move the head towards the center a little
- void stepIn() {
- digitalWrite(dirPin,LOW);
- // Serial.println("SteppingIn");
- stepPulse();
- }
- //step the read/write head all the way to the center
- void stepAllTheWayIn() {
- for(int i=0;i<81;i++) {
- stepIn();
- }
- }
- //step the read/write head all the way to the outside
- void stepAllTheWayOut() {
- while (digitalRead(track0Pin) == 1){
- stepOut();
- }
- }
- void writeData(byte data){
- Serial.println("Writing");
- digitalWrite(writeEnablePin, LOW);
- digitalWrite(motorEnableBPin, LOW);
- stepAllTheWayOut();
- for(unsigned i = 0; i<10; i++){
- for(unsigned index = 0; index<=8; index++){
- digitalWrite(writeDataPin,bitRead(data,index));
- Serial.print(bitRead(data,index));
- delay(500);
- digitalWrite(writeEnablePin, HIGH);
- stepIn();
- digitalWrite(writeEnablePin, LOW);
- }
- Serial.println("");
- }
- digitalWrite(motorEnableBPin, HIGH);
- digitalWrite(writeEnablePin, HIGH);
- }
- void readData(){
- Serial.println("Reading");
- byte data[10] = {0};
- digitalWrite(motorEnableBPin, LOW);
- digitalWrite(writeEnablePin, HIGH);
- stepAllTheWayOut();
- for(unsigned i = 0; i<10; i++){
- for(unsigned index = 0; index<=8; index++){
- delay(100);
- Serial.print(digitalRead(dataPin));
- stepIn();
- }
- Serial.println("");
- }
- digitalWrite(motorEnableBPin, HIGH);
- }
- void stepPulse() {
- digitalWrite(stepPin,LOW);
- delay(pulseDelayTime);
- digitalWrite(stepPin,HIGH);
- }
- void loop() {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement